<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

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

    共 4536字,需瀏覽 10分鐘

     ·

    2021-11-04 09:07

    點擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號

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

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

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

    我們接下來要建立的模型將能夠自動將公里轉(zhuǎn)換為英里,在本例中,我們將創(chuàng)建一個能夠?qū)W習(xí)如何進(jìn)行這種轉(zhuǎn)換的模型。我們將向這個模型提供一個 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í)算法,因為我們知道數(shù)據(jù)的輸入和輸出結(jié)果。并使用 Python 作為編程語言。Python 提供了一系列與機(jī)器學(xué)習(xí)相關(guān)的方便的庫和工具。本例中所有的步驟都是使用 Google Colab 執(zhí)行的。Google Colab 允許我們在瀏覽器上零配置地編寫和執(zhí)行 Python 代碼。

    導(dǎo)入必需的庫

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

    import tensorflow as tf
    import pandas as pd
    import seaborn as sns
    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ù)幀中。這個文件包含一系列公里和英里值的轉(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ù)。

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

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

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

    我們將“searborn”庫的“scatterplot”導(dǎo)入并命名為“sns”,然后使用這個庫來繪制上述圖形。它顯示了 X(公里)和 Y(英里)對應(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ù)幀的輸入和輸出來訓(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”方法來創(chuàng)建一個神經(jīng)網(wǎng)絡(luò),其中依次添加“l(fā)ayers”。每一個層(layer)都具有逐步提取輸入數(shù)據(jù)以獲得所需輸出的功能。Keras  是一個用 Python 寫的庫,我們創(chuàng)建神經(jīng)網(wǎng)絡(luò)并使用不同的機(jī)器學(xué)習(xí)框架,例如 TensorFlow。

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

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

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

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

    print("Compiling the model")
    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í)行速度就會越慢。

    print ("Training the model")
    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ù)有意義并且是一個足夠大的組,這是合乎邏輯的。

    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)練模型并沒有多大幫助,在第 50 次遍歷后,誤差并沒有減少。因此,訓(xùn)練該算法的最佳遍歷數(shù)大約是 50。

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

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

    在本例中,我們將 100 賦值給模型的輸入變量,然后模型會返回預(yù)測的英里數(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ù)測誤差為 0.00621414

    總  結(jié)

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

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

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

    作者介紹

    Kesk,軟件工程師,軟件愛好者,科幻作家。

    原文鏈接

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


    —版權(quán)聲明—

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

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


    —THE END—
    瀏覽 62
    點贊
    評論
    收藏
    分享

    手機(jī)掃一掃分享

    分享
    舉報
    評論
    圖片
    表情
    推薦
    點贊
    評論
    收藏
    分享

    手機(jī)掃一掃分享

    分享
    舉報

    <kbd id="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    蜜桃久久成人视频 | 一区二区三区韩国av夜夜骚 | 亚洲黄色免费大全 | 永久成人免费 | 日逼国产 |