偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用TensorFlow構(gòu)建機(jī)器學(xué)習(xí)模型

人工智能 機(jī)器學(xué)習(xí)
在這篇文章中,我將逐步講解如何使用 TensorFlow 創(chuàng)建一個(gè)簡單的機(jī)器學(xué)習(xí)模型。

[[432744]]

TensorFlow 是一個(gè)由谷歌開發(fā)的庫,并在 2015 年開源,它能使構(gòu)建和訓(xùn)練機(jī)器學(xué)習(xí)模型變得簡單。

我們接下來要建立的模型將能夠自動將公里轉(zhuǎn)換為英里,在本例中,我們將創(chuàng)建一個(gè)能夠?qū)W習(xí)如何進(jìn)行這種轉(zhuǎn)換的模型。我們將向這個(gè)模型提供一個(gè) CSV (https://en.wikipedia.org/wiki/Comma-separated_values)文件作為輸入,其中有 29 組已經(jīng)執(zhí)行過的公里和英里之間的轉(zhuǎn)換,基于這些數(shù)據(jù),我們的模型將學(xué)會自動進(jìn)行這種轉(zhuǎn)換。

我們將使用有監(jiān)督學(xué)習(xí)算法,因?yàn)槲覀冎罃?shù)據(jù)的輸入和輸出結(jié)果。并使用 Python 作為編程語言。Python 提供了一系列與機(jī)器學(xué)習(xí)相關(guān)的方便的庫和工具。本例中所有的步驟都是使用 Google Colab 執(zhí)行的。Google Colab 允許我們在瀏覽器上零配置地編寫和執(zhí)行 Python 代碼。

導(dǎo)入必需的庫

我們首先導(dǎo)入在我們的例子中將要使用到的庫。 

  1. import tensorflow as tf  
  2. import pandas as pd  
  3. import seaborn as sns  
  4. import matplotlib.pyplot as plt 
  •  我們將導(dǎo)入 TensorFlow 來創(chuàng)建我們的機(jī)器學(xué)習(xí)模型。
  •  我們還將導(dǎo)入 Pandas 庫來讀取包含有公里和英里轉(zhuǎn)換數(shù)據(jù)的 CSV 文件。
  •  最后,我們將導(dǎo)入 Seaborn 和 Matlotlib 庫繪制不同的結(jié)果。

加載樣例數(shù)據(jù)

我們將含有逗號分隔的值的文件(Kilometres-miles.csv)讀取到我們的數(shù)據(jù)幀中。這個(gè)文件包含一系列公里和英里值的轉(zhuǎn)換。我們將使用這些數(shù)據(jù)幀來訓(xùn)練我們的模型。你可以在這個(gè)鏈接(https://drive.google.com/file/d/1m63pJA-zUAA12XOCCBt3Aik9fnjrj_8s/view?usp=sharing)下載這個(gè)文件。

要從 Google Colab 讀取文件,你可以使用不同的方法。在本例中,我直接將 CSV 文件上傳到我的 Google Colab 上的 sample_data 文件夾中,但你可以從一個(gè) URL 中讀取文件(比如,從 GitHub)。

上傳到 Google Colab 的問題是,數(shù)據(jù)會在運(yùn)行時(shí)重啟時(shí)丟失。

數(shù)據(jù)幀是二維的大小可變的并且各種各樣的表格數(shù)據(jù)。 

  1. df  = pd.read_csv('/content/sample_data/Kilometres-miles.csv')  
  2. df.info 

示例數(shù)據(jù)信息

繪制數(shù)據(jù)幀

我們將“searborn”庫的“scatterplot”導(dǎo)入并命名為“sns”,然后使用這個(gè)庫來繪制上述圖形。它顯示了 X(公里)和 Y(英里)對應(yīng)關(guān)系的圖形化表示。 

  1. print("Painting the correlations")  
  2. #Once we load seaborn into the session, everytime a matplotlib plot is executed, seaborn's default customizations are added  
  3. sns.scatterplot(df['Kilometres'], df['Miles'])  
  4. plt.show() 

公里和英里的相關(guān)性

我們定義數(shù)據(jù)幀的輸入和輸出來訓(xùn)練模型:

X(公里)是輸入,Y(英里)是輸出。 

  1. print("Define input(X) and output(Y) variables")  
  2. X_train=df['Kilometres']  
  3. y_train=df['Miles'] 

創(chuàng)建神經(jīng)網(wǎng)絡(luò)

現(xiàn)在,讓我們使用“keras.Sequential”方法來創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò),其中依次添加“layers”。每一個(gè)層(layer)都具有逐步提取輸入數(shù)據(jù)以獲得所需輸出的功能。Keras  是一個(gè)用 Python 寫的庫,我們創(chuàng)建神經(jīng)網(wǎng)絡(luò)并使用不同的機(jī)器學(xué)習(xí)框架,例如 TensorFlow。

接下來,我們將使用“add”方法向模型添加一個(gè)層。 

  1. print("Creating the model")  
  2. model = tf.keras.Sequential()  
  3. model.add(tf.keras.layers.Dense(units=1,input_shape=[1])) 

創(chuàng)建神經(jīng)網(wǎng)絡(luò)

編譯模型

在訓(xùn)練我們的模型之前,我們將在編譯步驟中添加一些額外設(shè)置。

我們將設(shè)置一個(gè)優(yōu)化器和損失函數(shù),它們會測量我們的模型的準(zhǔn)確性。Adam 優(yōu)化是一種基于第一次和第二次矩的自適應(yīng)預(yù)算的隨機(jī)梯度下降算法。

為此,我們將使用基于平均方差的損失函數(shù),它測量了我們預(yù)測的平均方差。

我們的模型的目標(biāo)是最小化這個(gè)函數(shù)。 

  1. print("Compiling the model")  
  2. model.compile(optimizer=tf.keras.optimizers.Adam(1), loss='mean_squared_error' 

訓(xùn)練模型

我們將使用“擬合(fit)”方法來訓(xùn)練我們的模型。首先,我們傳入獨(dú)立變量或輸入變量(X-Kilometers)和目標(biāo)變量(Y-Miles)。

另一方面,我們預(yù)測 epoch 的數(shù)值。在本例中,epoch 值是 250。一個(gè) epoch 就是遍歷一遍所提供的完整的 X 和 Y 數(shù)據(jù)。

  •  如果 epoch 的數(shù)值越小,誤差就會越大;反過來,epoch 的數(shù)值越大,則誤差就會越小。
  •  如果 epoch 的數(shù)值越大,算法的執(zhí)行速度就會越慢。 
  1. print ("Training the model")  
  2. epochs_hist = model.fit(X_train, y_train, epochs = 250

訓(xùn)練模型的控制臺

評估模型

現(xiàn)在,我們評估創(chuàng)建的模型,在該模型中,我們可以觀察到損失(Training_loss)隨著執(zhí)行的遍歷次數(shù)(epoch)的增多而減少,如果訓(xùn)練集數(shù)據(jù)有意義并且是一個(gè)足夠大的組,這是合乎邏輯的。 

  1. print("Evaluating the model")  
  2. print(epochs_hist.history.keys())  
  3. #graph  
  4. plt.plot(epochs_hist.history['loss'])  
  5. plt.title('Evolution of the error associated with the model')  
  6. plt.xlabel('Epoch')  
  7. plt.ylabel('Training Loss')  
  8. plt.legend('Training Loss')  
  9. plt.show() 

從圖中我們可以看出,用 250 次訓(xùn)練模型并沒有多大幫助,在第 50 次遍歷后,誤差并沒有減少。因此,訓(xùn)練該算法的最佳遍歷數(shù)大約是 50。

進(jìn)行預(yù)測

現(xiàn)在我們已經(jīng)訓(xùn)練了我們的模型,我們可以使用它來進(jìn)行預(yù)測。

在本例中,我們將 100 賦值給模型的輸入變量,然后模型會返回預(yù)測的英里數(shù): 

  1. kilometers = 100  
  2. predictedMiles = model.predict([kilometers])  
  3. print("The conversion from Kilometres to Miles is as follows: " + str(predictedMiles)) 

從公里到英里的換算為 62.133785。

檢查結(jié)果 

  1. milesByFormula = kilometers * 0.6214  
  2. print("The conversion from kilometers to miles using the mathematical formula is as follows:" + str(milesByFormula))  
  3. diference = milesByFormula - predictedMiles  
  4. print("Prediction error:" + str(diference)) 

使用公式從公里到英里的換算值為:62.13999999999999。預(yù)測誤差為 0.00621414。

總結(jié)

通過本例,我們了解了如何使用 TensorFlow 庫來創(chuàng)建一個(gè)模型,這個(gè)模型已經(jīng)學(xué)會自動將公里數(shù)轉(zhuǎn)換為英里數(shù),并且誤差很小。

TensorFlow 用于執(zhí)行此過程的數(shù)學(xué)非常簡單?;旧?,本例使用線性回歸來創(chuàng)建模型,因?yàn)檩斎胱兞浚ü飻?shù))和輸出變量(英里數(shù))是線性相關(guān)的。在機(jī)器學(xué)習(xí)中,過程中最耗時(shí)的部分通常是準(zhǔn)備數(shù)據(jù)。

隨著時(shí)間的推移,我們收獲了一些經(jīng)驗(yàn),這些經(jīng)驗(yàn)可以幫助我們選擇最適合的算法及其設(shè)置,但一般來說,這是一項(xiàng)分析測試并改進(jìn)的任務(wù)。 

責(zé)任編輯:龐桂玉 來源: Linux公社
相關(guān)推薦

2017-07-07 14:41:13

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)JavaScript

2025-03-04 08:00:00

機(jī)器學(xué)習(xí)Rust開發(fā)

2019-07-23 10:22:11

TensorFlow.Python機(jī)器學(xué)習(xí)

2020-11-19 10:04:45

人工智能

2018-08-30 09:36:10

編程語言Python機(jī)器學(xué)習(xí)

2020-03-26 08:00:00

機(jī)器學(xué)習(xí)人工智能AI

2024-06-13 08:36:11

2022-08-09 13:44:37

機(jī)器學(xué)習(xí)PySpark M數(shù)據(jù)分析

2019-10-23 08:00:00

Flask機(jī)器學(xué)習(xí)人工智能

2024-08-15 14:48:57

2017-07-24 13:37:42

深度學(xué)習(xí)KerasTensorFlow

2017-04-06 09:20:10

機(jī)器學(xué)習(xí)模型信用卡詐騙

2017-05-17 08:24:08

TensorFlow機(jī)器學(xué)習(xí)線性回歸

2024-09-09 11:45:15

ONNX部署模型

2020-05-28 07:15:00

機(jī)器學(xué)習(xí)TensorFlow人工智能

2018-08-02 08:45:48

物聯(lián)網(wǎng)機(jī)器學(xué)習(xí)Tensorflow

2019-01-23 11:12:42

機(jī)器學(xué)習(xí)機(jī)器模型預(yù)測工資

2024-09-30 05:43:44

2020-09-22 14:59:52

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2017-07-13 10:12:58

機(jī)器學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號