自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

[[432744]]

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

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

我們將使用有監(jiān)督學(xué)習(xí)算法,因為我們知道數(shù)據(jù)的輸入和輸出結(jié)果。并使用 Python 作為編程語言。Python 提供了一系列與機器學(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)建我們的機器學(xué)習(xí)模型。
  •  我們還將導(dǎo)入 Pandas 庫來讀取包含有公里和英里轉(zhuǎn)換數(shù)據(jù)的 CSV 文件。
  •  最后,我們將導(dǎo)入 Seaborn 和 Matlotlib 庫繪制不同的結(jié)果。

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

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

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

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

數(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”,然后使用這個庫來繪制上述圖形。它顯示了 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)建一個神經(jīng)網(wǎng)絡(luò),其中依次添加“layers”。每一個層(layer)都具有逐步提取輸入數(shù)據(jù)以獲得所需輸出的功能。Keras  是一個用 Python 寫的庫,我們創(chuàng)建神經(jīng)網(wǎng)絡(luò)并使用不同的機器學(xué)習(xí)框架,例如 TensorFlow。

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

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

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

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

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

訓(xùn)練模型

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

另一方面,我們預(yù)測 epoch 的數(shù)值。在本例中,epoch 值是 250。一個 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ù)有意義并且是一個足夠大的組,這是合乎邏輯的。 

  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。

進行預(yù)測

現(xiàn)在我們已經(jīng)訓(xù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)建一個模型,這個模型已經(jīng)學(xué)會自動將公里數(shù)轉(zhuǎn)換為英里數(shù),并且誤差很小。

TensorFlow 用于執(zhí)行此過程的數(shù)學(xué)非常簡單?;旧希纠褂镁€性回歸來創(chuàng)建模型,因為輸入變量(公里數(shù))和輸出變量(英里數(shù))是線性相關(guān)的。在機器學(xué)習(xí)中,過程中最耗時的部分通常是準(zhǔn)備數(shù)據(jù)。

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

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

2017-07-07 14:41:13

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

2025-03-04 08:00:00

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

2019-07-23 10:22:11

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

2018-08-30 09:36:10

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

2020-11-19 10:04:45

人工智能

2020-03-26 08:00:00

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

2024-06-13 08:36:11

2022-08-09 13:44:37

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

2019-10-23 08:00:00

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

2017-07-24 13:37:42

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

2024-08-15 14:48:57

2017-05-17 08:24:08

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

2017-04-06 09:20:10

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

2024-09-09 11:45:15

ONNX部署模型

2020-05-28 07:15:00

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

2018-08-02 08:45:48

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

2019-01-23 11:12:42

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

2024-09-30 05:43:44

2018-07-27 16:18:30

PythonTwitter機器人

2020-05-19 09:00:26

機器學(xué)習(xí)人工智能TensorFlow
點贊
收藏

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