0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

新機(jī)器視覺 ? 來源:新機(jī)器視覺 ? 2024-01-08 09:25 ? 次閱讀

作者 | Kesk 譯者 | 張健欣 來源| AI前線

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

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

我們接下來要建立的模型將能夠自動(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í)行過的公里和英里之間的轉(zhuǎn)換,基于這些數(shù)據(jù),我們的模型將學(xué)會(huì)自動(dòng)進(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 允許我們?cè)跒g覽器上零配置地編寫和執(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ù)

我們將含有逗號(hào)分隔的值的文件(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ù)會(huì)在運(yùn)行時(shí)重啟時(shí)丟失。

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

df  = pd.read_csv('/content/sample_data/Kilometres-miles.csv')
df.info
3c6681b6-adb9-11ee-8b88-92fbcf53809c.png

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

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

我們將“searborn”庫的“scatterplot”導(dǎo)入并命名為“sns”,然后使用這個(gè)庫來繪制上述圖形。它顯示了 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()
3c6d1b02-adb9-11ee-8b88-92fbcf53809c.png

公里和英里的相關(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)建一個(gè)神經(jīng)網(wǎng)絡(luò),其中依次添加“l(fā)ayers”。每一個(gè)層(layer)都具有逐步提取輸入數(shù)據(jù)以獲得所需輸出的功能。Keras 是一個(gè)用 Python 寫的庫,我們創(chuàng)建神經(jīng)網(wǎng)絡(luò)并使用不同的機(jī)器學(xué)習(xí)框架,例如 TensorFlow。

接下來,我們將使用“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)”方法來訓(xùn)練我們的模型。首先,我們傳入獨(dú)立變量或輸入變量(X-Kilometers)和目標(biāo)變量(Y-Miles)。

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

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

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

print ("Training the model")
epochs_hist = model.fit(X_train, y_train, epochs = 250)
3c75dc88-adb9-11ee-8b88-92fbcf53809c.png

訓(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()

3c81e73a-adb9-11ee-8b88-92fbcf53809c.png

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

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

現(xiàn)在我們已經(jīng)訓(xùn)練了我們的模型,我們可以使用它來進(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é)

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

TensorFlow 用于執(zhí)行此過程的數(shù)學(xué)非常簡(jiǎn)單?;旧?,本例使用線性回歸來創(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)分析測(cè)試并改進(jìn)的任務(wù)。

作者介紹

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

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3243

    瀏覽量

    48836
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8418

    瀏覽量

    132628
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84682
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    329

    瀏覽量

    60535

原文標(biāo)題:如何使用TensorFlow構(gòu)建機(jī)器學(xué)習(xí)模型

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    tensorflow機(jī)器學(xué)習(xí)日志

    tensorflow學(xué)習(xí)日志(四)機(jī)器學(xué)習(xí)(泛化,過擬合, 數(shù)據(jù)集,驗(yàn)證集,測(cè)試集)
    發(fā)表于 04-14 06:32

    labview+yolov4+tensorflow+openvion深度學(xué)習(xí)

    缺陷檢測(cè)主要知識(shí)點(diǎn):1Tensorflow-GPU環(huán)境的搭建Tensorflow object環(huán)境搭建學(xué)會(huì)如何標(biāo)注圖片如何labview快速通過遷移學(xué)習(xí)訓(xùn)練自己的模型如何利用labvi
    發(fā)表于 05-10 22:33

    labview調(diào)用深度學(xué)習(xí)tensorflow模型非常簡(jiǎn)單,附上源碼和模型

    本帖最后由 wcl86 于 2021-9-9 10:39 編輯 `labview調(diào)用深度學(xué)習(xí)tensorflow模型非常簡(jiǎn)單,效果如下,附上源碼和訓(xùn)練過的模型:[hide][/h
    發(fā)表于 06-03 16:38

    Mali GPU支持tensorflow或者caffe等深度學(xué)習(xí)模型

    Mali GPU 支持tensorflow或者caffe等深度學(xué)習(xí)模型嗎? 好像caffe2go和tensorflow lit可以部署到ARM,但不知道是否支持在GPU運(yùn)行?我希望把訓(xùn)
    發(fā)表于 09-16 14:13

    部署基于嵌入的機(jī)器學(xué)習(xí)模型

    還需要處理模型的更新。模型更新的速度甚至可以非常高,因?yàn)?b class='flag-5'>模型需要定期地根據(jù)最新的數(shù)據(jù)進(jìn)行再訓(xùn)練?! ”疚膶⒚枋鲆环N更復(fù)雜的機(jī)器學(xué)習(xí)系統(tǒng)的一般
    發(fā)表于 11-02 15:09

    谷歌推出開源的量子機(jī)器學(xué)習(xí)TensorFlow Quantum

    谷歌在其官方AI博客宣布推出TensorFlow Quantum(TFQ),這是一個(gè)開源的量子機(jī)器學(xué)習(xí)庫,可將量子計(jì)算與機(jī)器學(xué)習(xí)結(jié)合在一起,
    的頭像 發(fā)表于 03-11 14:25 ?2472次閱讀

    如何才能正確的構(gòu)建機(jī)器學(xué)習(xí)模型

    組織構(gòu)建一個(gè)可行的、可靠的、敏捷的機(jī)器學(xué)習(xí)模型來簡(jiǎn)化操作和支持其業(yè)務(wù)計(jì)劃需要耐心、準(zhǔn)備以及毅力。各種組織都在為各行業(yè)中的眾多應(yīng)用實(shí)施人工智能項(xiàng)目。這些應(yīng)用包括預(yù)測(cè)分析、模式識(shí)別系統(tǒng)、自
    發(fā)表于 01-11 19:25 ?14次下載

    使用TensorFlow建立深度學(xué)習(xí)機(jī)器學(xué)習(xí)網(wǎng)絡(luò)

    教你使用TensorFlow建立深度學(xué)習(xí)機(jī)器學(xué)習(xí)網(wǎng)絡(luò)。
    發(fā)表于 03-26 09:44 ?18次下載

    六個(gè)構(gòu)建機(jī)器學(xué)習(xí)模型需避免的錯(cuò)誤

    近年來,機(jī)器學(xué)習(xí)在學(xué)術(shù)研究領(lǐng)域和實(shí)際應(yīng)用領(lǐng)域得到越來越多的關(guān)注。但構(gòu)建機(jī)器學(xué)習(xí)模型不是一件簡(jiǎn)單的
    發(fā)表于 05-05 16:39 ?1418次閱讀

    輕松入門,高效成長(zhǎng): "TensorFlow 機(jī)器學(xué)習(xí)技能解鎖季"

    體系,體驗(yàn) TensorFlow 的最佳實(shí)踐模式? 《 TensorFlow 入門實(shí)操課程》 帶你零基礎(chǔ)快速上手 想高效實(shí)踐機(jī)器學(xué)習(xí)模型部署
    的頭像 發(fā)表于 11-10 11:35 ?790次閱讀

    機(jī)器學(xué)習(xí)構(gòu)建ML模型實(shí)踐

    實(shí)踐中的機(jī)器學(xué)習(xí)構(gòu)建 ML 模型
    的頭像 發(fā)表于 07-05 16:30 ?714次閱讀

    深度學(xué)習(xí)框架tensorflow介紹

    。TensorFlow可以用于各種不同的任務(wù),包括圖像和語音識(shí)別、自然語言處理和推薦系統(tǒng)等。 TensorFlow提供了一個(gè)靈活和強(qiáng)大的平臺(tái),可以用于構(gòu)建和訓(xùn)練各種深度學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:11 ?2518次閱讀

    如何使用Tensorflow保存或加載模型

    TensorFlow是一個(gè)廣泛使用的開源機(jī)器學(xué)習(xí)庫,它提供了豐富的API來構(gòu)建和訓(xùn)練各種深度學(xué)習(xí)模型
    的頭像 發(fā)表于 07-04 13:07 ?1517次閱讀

    keras模型轉(zhuǎn)tensorflow session

    和訓(xùn)練深度學(xué)習(xí)模型。Keras是基于TensorFlow、Theano或CNTK等底層計(jì)算框架構(gòu)建的。TensorFlow是一個(gè)開源的
    的頭像 發(fā)表于 07-05 09:36 ?537次閱讀

    tensorflow簡(jiǎn)單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡(jiǎn)單的模型訓(xùn)練。TensorFlow是一個(gè)開源的機(jī)器學(xué)習(xí)庫,廣泛用于各種
    的頭像 發(fā)表于 07-05 09:38 ?671次閱讀