<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 4536字,需瀏覽 10分鐘

           ·

          2021-11-04 09:07

          點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺(jué)”公眾號(hào)

          視覺(jué)/圖像重磅干貨,第一時(shí)間送達(dá)

          作者 | Kesk
          譯者 | 張健欣
          來(lái)源 | AI前線
          在這篇文章中,我將逐步講解如何使用 TensorFlow 創(chuàng)建一個(gè)簡(jiǎn)單的機(jī)器學(xué)習(xí)模型。  

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

          我們接下來(lái)要建立的模型將能夠自動(dòng)將公里轉(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í)行過(guò)的公里和英里之間的轉(zhuǎn)換,基于這些數(shù)據(jù),我們的模型將學(xué)會(huì)自動(dòng)進(jìn)行這種轉(zhuǎn)換。

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

          導(dǎo)入必需的庫(kù)

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

          import tensorflow as tf
          import pandas as pd
          import seaborn as sns
          import matplotlib.pyplot as plt
          • 我們將導(dǎo)入 TensorFlow 來(lái)創(chuàng)建我們的機(jī)器學(xué)習(xí)模型。

          • 我們還將導(dǎo)入 Pandas 庫(kù)來(lái)讀取包含有公里和英里轉(zhuǎn)換數(shù)據(jù)的 CSV 文件。

          • 最后,我們將導(dǎo)入 Seaborn 和 Matlotlib 庫(kù)繪制不同的結(jié)果。

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

          我們將含有逗號(hào)分隔的值的文件(Kilometres-miles.csv)讀取到我們的數(shù)據(jù)幀中。這個(gè)文件包含一系列公里和英里值的轉(zhuǎn)換。我們將使用這些數(shù)據(jù)幀來(lái)訓(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 的問(wèn)題是,數(shù)據(jù)會(huì)在運(yùn)行時(shí)重啟時(shí)丟失。

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

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

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

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

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

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

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

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

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

          print("Define input(X) and output(Y) variables")
          X_train=df['Kilometres']
          y_train=df['Miles']
          創(chuàng)建神經(jīng)網(wǎng)絡(luò)

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

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

          print("Creating the model")
          model = tf.keras.Sequential()
          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ù),它們會(huì)測(cè)量我們的模型的準(zhǔn)確性。Adam 優(yōu)化是一種基于第一次和第二次矩的自適應(yīng)預(yù)算的隨機(jī)梯度下降算法。

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

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

          print("Compiling the model")
          model.compile(optimizer=tf.keras.optimizers.Adam(1), loss='mean_squared_error')
          訓(xùn)練模型

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

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

          • 如果 epoch 的數(shù)值越小,誤差就會(huì)越大;反過(guò)來(lái),epoch 的數(shù)值越大,則誤差就會(huì)越小。

          • 如果 epoch 的數(shù)值越大,算法的執(zhí)行速度就會(huì)越慢。

          print ("Training the model")
          epochs_hist = model.fit(X_train, y_train, epochs = 250)

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

          評(píng)估模型

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

          print("Evaluating the model")
          print(epochs_hist.history.keys())


          #graph
          plt.plot(epochs_hist.history['loss'])
          plt.title('Evolution of the error associated with the model')
          plt.xlabel('Epoch')
          plt.ylabel('Training Loss')
          plt.legend('Training Loss')
          plt.show()

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

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

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

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

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

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

          檢查結(jié)果
          milesByFormula = kilometers * 0.6214
          print("The conversion from kilometers to miles using the mathematical formula is as follows:" + str(milesByFormula))
          diference = milesByFormula - predictedMiles
          print("Prediction error:" + str(diference))

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

          總  結(jié)

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

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

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

          作者介紹

          Kesk,軟件工程師,軟件愛(ài)好者,科幻作家。

          原文鏈接

          https://betterprogramming.pub/build-your-first-machine-learning-model-with-tensorflow-ffc2f7cbf4f2


          —版權(quán)聲明—

          僅用于學(xué)術(shù)分享,版權(quán)屬于原作者。

          若有侵權(quán),請(qǐng)聯(lián)系微信號(hào):yiyang-sy 刪除或修改!


          —THE END—
          瀏覽 62
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品蜜桃在线播放 | 日逼中文字幕 | 俺来也俺去也www色 | 欧洲激情网| 青青操在线播放 |