<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
      此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
      人工智能開發(fā)者 正文
      發(fā)私信給AI研習(xí)社-譯站
      發(fā)送

      0

      TensorFlow 2入門指南,初學(xué)者必備!

      本文作者: AI研習(xí)社-譯站 2020-08-14 14:42
      導(dǎo)語:TensorFlow是谷歌推出的深度學(xué)習(xí)框架,于2019年發(fā)布第二版,被行業(yè)專家和研究人員廣泛使用。本文將通過實(shí)例演練,帶你了解TensorFlow的最新版本。

      字幕組雙語原文:TensorFlow 2入門指南,初學(xué)者必備!

      英語原文:Getting Started with TensorFlow 2

      翻譯:雷鋒字幕組(赟瑾和鳴、大表哥


      什么是Tensorflow?

      TensorFlow是谷歌推出的深度學(xué)習(xí)框架,于2019年發(fā)布了第二版。 它是世界上最著名的深度學(xué)習(xí)框架之一,被行業(yè)專家和研究人員廣泛使用。

      TensorFlow 2入門指南,初學(xué)者必備!

      Tensorflow v1難以使用和理解,因?yàn)樗腜ythonic較少,但是隨著Keras發(fā)行的v2現(xiàn)在與Tensorflow.keras完全同步,它易于使用,易學(xué)且易于理解。

      請(qǐng)記住,這不是有關(guān)深度學(xué)習(xí)的文章,所以我希望您了解深度學(xué)習(xí)的術(shù)語及其背后的基本思想。

      我們將使用非常著名的數(shù)據(jù)集IRIS數(shù)據(jù)集探索深度學(xué)習(xí)的世界。

      廢話不多說,我們直接看看代碼。

      導(dǎo)入和理解數(shù)據(jù)集

      from sklearn.datasets import load_iris

      iris = load_iris()

      現(xiàn)在,這個(gè)  iris 是一個(gè)字典。 我們可以使用下面的代碼查看鍵值

      >>> iris.keys()

      dict_keys([‘data’, ‘target’, ‘frame’, ‘target_names’, ‘DESCR’, ‘feature_names’, ‘filename’])

      因此,我們的數(shù)據(jù)在 data  鍵中,目標(biāo)在  targe 鍵中,依此類推。 如果要查看此數(shù)據(jù)集的詳細(xì)信息,可以使用  iris[ ['DESCR']。

      現(xiàn)在,我們必須導(dǎo)入其他重要的庫,這將有助于我們創(chuàng)建神經(jīng)網(wǎng)絡(luò)。

      from sklearn.model_selection import train_test_split #to split data

      import numpy as np

      import pandas as pd

      import matplotlib.pyplot as plt

      import tensorflow as tf

      from tensorflow.keras.layers import Dense

      from tensorflow.keras.models import Sequential

      在這里,我們從tensorflow中導(dǎo)入了2個(gè)主要的東西,分別是Dense和Sequential。 從tensorflow.keras.layers導(dǎo)入的Dense是緊密連接的一種層。 密集連接的層意味著先前層的所有節(jié)點(diǎn)都連接到當(dāng)前層的所有節(jié)點(diǎn)。

      Sequential是Keras的API,通常稱為Sequential API,我們將使用它來構(gòu)建神經(jīng)網(wǎng)絡(luò)。

      為了更好地理解數(shù)據(jù),我們可以將其轉(zhuǎn)換為數(shù)據(jù)幀。 我們開始做吧。

      X = pd.DataFrame(data = iris.data, columns = iris.feature_names)

      print(X.head())


      TensorFlow 2入門指南,初學(xué)者必備!

      X.head()

      請(qǐng)注意,這里我們?cè)O(shè)置了column = iris.feature_names,其中feature_names是具有所有4個(gè)特征名稱的鍵。

      同樣對(duì)于目標(biāo),

      y = pd.DataFrame(data=iris.target, columns = [‘irisType’])


      TensorFlow 2入門指南,初學(xué)者必備!

      y.head()

      要查看目標(biāo)集合中的類數(shù)量,我們可以使用

      y.irisType.value_counts()


      TensorFlow 2入門指南,初學(xué)者必備!

      這里我們可以看到我們有3個(gè)類,每個(gè)類都有標(biāo)簽0、1和2。

      iris.target_names #它是iris詞典的鍵值


      TensorFlow 2入門指南,初學(xué)者必備!

      這些是我們必須預(yù)測的類名稱。

      機(jī)器學(xué)習(xí)的數(shù)據(jù)預(yù)處理

      目前,機(jī)器學(xué)習(xí)的第一步就是數(shù)據(jù)預(yù)處理。數(shù)據(jù)預(yù)處理的主要步驟是:

      • 填入缺失值

      • 將數(shù)據(jù)分割成為訓(xùn)練集以及驗(yàn)證集

      • 對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理

      • 將類別性數(shù)據(jù)轉(zhuǎn)換成為獨(dú)熱向量

      缺失值

      為了檢查是否存在缺失值,我們可以用pandas.DataFrame.info()來進(jìn)行檢查工作。

      X.info()


      TensorFlow 2入門指南,初學(xué)者必備!

      這樣我們就可以看到我們(很幸運(yùn)地)沒有缺失值,并且所有特征都是float64格式的。

      分割為訓(xùn)練集和測試集

      為了將數(shù)據(jù)集分割為訓(xùn)練集和測試集,我們可以使用先前已經(jīng)引入過的sklearn.model_selection中的train_test_split。

      X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.1)

      其中test_size是一種聲明,它說明我們希望整個(gè)數(shù)據(jù)集的10%被用來做為測試數(shù)據(jù)。

      數(shù)據(jù)的標(biāo)準(zhǔn)化

      一般情況下,當(dāng)數(shù)據(jù)的偏差非常大的時(shí)候,我們會(huì)對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化。為了查看偏差值,我們可以使用pandas.DataFrame中的var()函數(shù)來檢查所有列的偏差值。

      X_train.var(), X_test.var()


      TensorFlow 2入門指南,初學(xué)者必備!

       這樣我們便可以看到,X_train和X_test的偏差值都非常低,因此無需對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化。

      將分類數(shù)據(jù)轉(zhuǎn)換為一個(gè)獨(dú)熱向量

      因?yàn)槲覀冎牢覀兊妮敵鰯?shù)據(jù)是已經(jīng)使用iris.target_name檢查過的3個(gè)類之一,所以好消息是,當(dāng)我們加載目標(biāo)時(shí),它們已經(jīng)是0、1、2格式,其中0=1類,1=2類,依此類推。

      這種表示方式的問題在于,我們的模型可能會(huì)賦予越高的數(shù)字更高的優(yōu)先級(jí),這可能會(huì)導(dǎo)致結(jié)果有偏差。 因此,為了解決這個(gè)問題,我們將使用單熱點(diǎn)表示法。 你可以在這里了解更多關(guān)于一個(gè)熱門載體的信息。 我們可以使用內(nèi)置的KERS TO_CATEGRICAL,也可以使用skLearn中的OneHotEncoding。 我們將使用to_classical。

      y_train = tf.keras.utils.to_categorical(y_train)

      y_test = tf.keras.utils.to_categorical(y_test)

      我們將只檢查前5行,以檢查它是否已正確轉(zhuǎn)換。

      y_train[:5,:]


      TensorFlow 2入門指南,初學(xué)者必備!

       是的,我們已經(jīng)把它轉(zhuǎn)換成了獨(dú)熱的表達(dá)方式。

      最后一件事

      我們可以做的最后一件事是將我們的數(shù)據(jù)轉(zhuǎn)換回Numpy數(shù)組,這樣我們就可以使用一些額外的函數(shù),這些函數(shù)將在稍后的模型中對(duì)我們有所幫助。 要做到這一點(diǎn),我們可以使用

      X_train = X_train.values

      X_test = X_test.values

      讓我們看看第一個(gè)訓(xùn)練示例的結(jié)果是什么。

      X_train[0]


      TensorFlow 2入門指南,初學(xué)者必備!

      在這里,我們可以看到第一個(gè)訓(xùn)練示例中4個(gè)特征的值,它的形狀是(4),

      當(dāng)我們?cè)谒鼈兩鲜褂胻o_Category時(shí),我們的目標(biāo)標(biāo)簽已經(jīng)是數(shù)組格式。

      機(jī)器學(xué)習(xí)模型

      現(xiàn)在,我們終于準(zhǔn)備好創(chuàng)建我們的模型并對(duì)其進(jìn)行訓(xùn)練。 我們將從一個(gè)簡單的模型開始,然后我們將轉(zhuǎn)到復(fù)雜的模型結(jié)構(gòu),在那里我們將介紹Keras中的不同技巧和技術(shù)。

      讓我們對(duì)我們的基本模型進(jìn)行編碼

      model1 = Sequential() #Sequential Object

      首先,我們必須創(chuàng)建一個(gè)Sequential對(duì)象。 現(xiàn)在,要?jiǎng)?chuàng)建一個(gè)模型,我們所要做的就是根據(jù)我們的選擇添加不同類型的層。 我們將制作一個(gè)10層的Dense層模型,這樣我們就可以觀察到過擬合,并在以后通過不同的正則化技術(shù)來減少它。

      model1.add( Dense( 64, activation = 'relu', input_shape= X_train[0].shape))

      model1.add( Dense (128, activation = 'relu')

      model1.add( Dense (128, activation = 'relu')

      model1.add( Dense (128, activation = 'relu')

      model1.add( Dense (128, activation = 'relu')

      model1.add( Dense (64, activation = 'relu')

      model1.add( Dense (64, activation = 'relu')

      model1.add( Dense (64, activation = 'relu')

      model1.add( Dense (64, activation = 'relu')

      model1.add( Dense (3, activation = 'softmax')

      請(qǐng)注意,在我們的第一層中,我們使用了一個(gè)額外的參數(shù)INPUT_Shape。 此參數(shù)指定第一層的尺寸。 在這種情況下,我們不關(guān)心訓(xùn)練示例的數(shù)量。 相反,我們只關(guān)心功能的數(shù)量。 因此,我們傳入任何訓(xùn)練示例的形狀,在我們的示例中,它是(4,)在input_Shape內(nèi)。

      請(qǐng)注意,我們?cè)谳敵鰧又惺褂昧薙oftmax(激活函數(shù)),因?yàn)樗且粋€(gè)多類分類問題。 如果這是一個(gè)二進(jìn)制分類問題,我們會(huì)使用Sigmoid激活函數(shù)。

      我們可以傳入任何我們想要的激活函數(shù),如Sigmoid或linear或tanh,但實(shí)驗(yàn)證明relu在這類模型中表現(xiàn)最好。

      現(xiàn)在,當(dāng)我們定義了模型的形狀后,下一步是指定它的損耗、優(yōu)化器和度量。 我們?cè)趉eras中使用Compile方法指定這些參數(shù)。

      model1.compile(optimizer='adam', loss= 'categorical_crossentropy', metrics = ['acc'])

      在這里,我們可以使用任何優(yōu)化器,如隨機(jī)梯度下降、RMSProp等,但我們將使用Adam。

      我們?cè)谶@里使用CATEGRICAL_CROSENTROPY是因?yàn)槲覀冇幸粋€(gè)多類分類問題,如果我們有一個(gè)二進(jìn)制分類問題,我們將使用BINARY_CROSENTROPY。

      衡量標(biāo)準(zhǔn)對(duì)于評(píng)估一個(gè)人的模型是很重要的。 我們可以根據(jù)不同的度量標(biāo)準(zhǔn)來評(píng)估我們的模型。 對(duì)于分類問題,最重要的衡量標(biāo)準(zhǔn)是準(zhǔn)確度,它表明我們的預(yù)測有多準(zhǔn)確。

      我們模型的最后一步是將其匹配到訓(xùn)練數(shù)據(jù)和訓(xùn)練標(biāo)簽上。 讓我們對(duì)它進(jìn)行編碼。

      history = model1.fit(X_train, y_train, batch_size = 40, epochs=800, validation_split = 0.1

      fit返回一個(gè)回調(diào),其中包含我們訓(xùn)練的所有歷史記錄,我們可以使用它來執(zhí)行不同的有用任務(wù),如繪圖等。

      歷史回調(diào)有一個(gè)名為history的屬性,我們可以將其作為history.history進(jìn)行訪問,這是一個(gè)包含所有損失和指標(biāo)歷史的字典,即,在我們的示例中,它具有Loss、Acc、val_loses和val_acc的歷史記錄,并且我們可以將每個(gè)單獨(dú)的歷史記錄作為 history.history.loss 或  history.history['val_acc']  等進(jìn)行訪問。

      我們有一個(gè)指定的epoch數(shù)為800,batch大小為40,驗(yàn)證拆分為0.1,這意味著我們現(xiàn)在有10%的驗(yàn)證數(shù)據(jù),我們將使用這些數(shù)據(jù)來分析我們的訓(xùn)練。 使用800個(gè)epoch將過度擬合數(shù)據(jù),這意味著它將在訓(xùn)練數(shù)據(jù)上執(zhí)行得非常好,但在測試數(shù)據(jù)上則不會(huì)。

      當(dāng)模型進(jìn)行訓(xùn)練時(shí),我們可以看到我們?cè)谟?xùn)練集和驗(yàn)證集上的損失和準(zhǔn)確性。

      TensorFlow 2入門指南,初學(xué)者必備!

      在此,我們可以看到,訓(xùn)練集上的準(zhǔn)確率是100%,驗(yàn)證集上的準(zhǔn)確率則為67%,這對(duì)于這樣一個(gè)模型來說已經(jīng)很出色了。接下來就讓我們畫出圖像。

      plt.plot(history.history['acc'])

      plt.plot(history.history['val_acc'])

      plt.xlabel('Epochs')

      plt.ylabel('Acc')

      plt.legend(['Training', 'Validation'], loc='upper right')


      TensorFlow 2入門指南,初學(xué)者必備!

       我們可以很清楚地看到,訓(xùn)練集上的準(zhǔn)確率要比驗(yàn)證集上高得多了。

      類似地,我們用如下方法畫出損失:

      plt.plot(history.history['loss'])

      plt.plot(history.history['val_loss'])

      plt.xlabel('Epochs')

      plt.ylabel('Loss')

      plt.legend(['Training', 'Validation'], loc='upper left')


      TensorFlow 2入門指南,初學(xué)者必備!

      在此,我們可以很清楚地看到,驗(yàn)證集上的損失比訓(xùn)練集上要大得多了,這是因?yàn)閿?shù)據(jù)被過擬合了。

      為了看看模型的表現(xiàn)是不是好,我們可以使用model.evaluate來查看。我們要將數(shù)據(jù)和標(biāo)簽放入評(píng)估函數(shù)中。

      model1.evaluate(X_test, y_test)


      TensorFlow 2入門指南,初學(xué)者必備!

      這樣,我們就可看到模型的準(zhǔn)確率為88%,這對(duì)于一個(gè)過擬合的模型來說已經(jīng)很好了。  

      正則化

      讓我們通過將正則化添加到我們的模型中來使它變得更好。 正則化將減少我們模型的過度擬合,并將改進(jìn)我們的模型。

      我們將在我們的模型中添加L2正則化。 單擊 此處了解有關(guān)L2正則化的更多信息。 要在我們的模型中添加L2正則化,我們必須指定要添加正則化的層,并給出一個(gè)附加參數(shù)kernel_Regularizer,然后傳遞tf.keras.Regularizers.l2()。

      我們還將在我們的模型中實(shí)現(xiàn)一些dropout,這將幫助我們更好地減少過擬合,從而獲得更好的性能。 要閱讀更多關(guān)于dropout背后的理論和動(dòng)機(jī),請(qǐng)參閱這篇文章。

      讓我們重新定義這個(gè)模型吧。

      model2 = Sequential()

      model2.add(Dense(64, activation = 'relu', input_shape= X_train[0].shape))

      model2.add( Dense(128, activation = 'relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)

      ))

      model2.add( Dense (128, activation = 'relu',kernel_regularizer=tf.keras.regularizers.l2(0.001)

      ))

      model2.add(tf.keras.layers.Dropout(0.5)

      model2.add( Dense (128, activation = 'relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)

      ))

      model2.add(Dense(128, activation = 'relu', kernel_regularizer = tf.keras.regularizers.l2(0.001)

      ))

      model2.add( Dense (64, activation = 'relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)

      ))

      model2.add( Dense (64, activation = 'relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)

      ))

      model2.add(tf.keras.layers.Dropout(0.5)

      model2.add( Dense (64, activation = 'relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)

      ))

      model2.add( Dense (64, activation = 'relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)

      ))

      model2.add( Dense (3, activation = 'softmax', kernel_regularizer=tf.keras.regularizers.l2(0.001)

      ))

      如果你仔細(xì)觀察,我們所有的層和參數(shù)都是一樣的,除了我們?cè)诿總€(gè)dense層中增加了2個(gè)dropout層和正則化。

      我們將保留所有其他東西(損失、優(yōu)化器、epoch等)一樣。

      model2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])

      history2 = model2.fit(X_train, y_train, epochs=800, validation_split=0.1, batch_size=40)

      現(xiàn)在讓我們?cè)u(píng)估一下模型。

      TensorFlow 2入門指南,初學(xué)者必備!

      你猜怎么著? 通過加入正則化和dropout層,我們的準(zhǔn)確率從88%提高到94%。 如果我們?cè)黾恿薆N層,它將會(huì)進(jìn)一步改善。

      讓我們把它畫出來。

      準(zhǔn)確率

      plt.plot(history2.history['acc'])

      plt.plot(history2.history['val_acc'])

      plt.title('Accuracy vs. epochs')

      plt.ylabel('Acc')

      plt.xlabel('Epoch')

      plt.legend(['Training', 'Validation'], loc='lower right')

      plt.show()


      TensorFlow 2入門指南,初學(xué)者必備! 

      plt.plot(history2.history['loss'])

      plt.plot(history2.history['val_loss'])

      plt.title('Loss vs. epochs')

      plt.ylabel('Loss')

      plt.xlabel('Epoch')

      plt.legend(['Training', 'Validation'], loc='upper right')

      plt.show()



      TensorFlow 2入門指南,初學(xué)者必備!

      洞見

      如此一來,我們就非常成功地改善了模型的過擬合,并且將模型準(zhǔn)確率提升了幾乎6%,這對(duì)于一個(gè)小數(shù)據(jù)集來說是很好的改善。


      雷鋒字幕組是由AI愛好者組成的志愿者翻譯團(tuán)隊(duì);團(tuán)隊(duì)成員有大數(shù)據(jù)專家、算法工程師、圖像處理工程師、產(chǎn)品經(jīng)理、產(chǎn)品運(yùn)營、IT咨詢?nèi)恕⒃谛熒?;志愿者們來自IBM、AVL、Adobe、阿里、百度等知名企業(yè),北大、清華、港大、中科院、南卡羅萊納大學(xué)、早稻田大學(xué)等海內(nèi)外高校研究所。

      了解字幕組請(qǐng)聯(lián)系微信:tlacttlact

      轉(zhuǎn)載請(qǐng)聯(lián)系字幕組微信并注明出處:雷鋒字幕組

      雷鋒網(wǎng)雷鋒網(wǎng)

      雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

      TensorFlow 2入門指南,初學(xué)者必備!

      分享:
      相關(guān)文章

      知情人士

      AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識(shí),讓語言不再成為學(xué)習(xí)知識(shí)的門檻。(原雷鋒字幕組)
      當(dāng)月熱門文章
      最新文章
      請(qǐng)?zhí)顚懮暾?qǐng)人資料
      姓名
      電話
      郵箱
      微信號(hào)
      作品鏈接
      個(gè)人簡介
      為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
      您的郵箱還未驗(yàn)證,完成可獲20積分喲!
      請(qǐng)驗(yàn)證您的郵箱
      立即驗(yàn)證
      完善賬號(hào)信息
      您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
      立即設(shè)置 以后再說
      主站蜘蛛池模板: 无码h片| 亚卅AV| 少妇综合网| 丁香五月综合| 华亭县| 强奸福利视频在线观看| 一区二区三区四区亚洲自拍| 久久人人妻人人爽人人卡片av| 巨大黑人极品videos精品| 51久久| 蜜桃av蜜臀av色欲av麻| 无码人妻精品一区二区三区温州| 91精品国产午夜福利| 成人免费av| 99久久99久久加热有精品| 青椒国产97在线熟女| 古田县| 国产自产在线视频一区| 聚色av| 人人妻人人澡人人爽欧美一区九九| 永久免费看mv网站入口| 福利一区二区三区av| 国内自拍av在线免费| 亚洲大尺度视频在线播放| 国产98色在线 | 日韩| 人妻体验按摩到忍不住哀求继续| 熟女人妇 成熟妇女系列视频| 岛国AV在线| 婷婷开心深爱五月天播播| 超碰福利导航| 国产成人精品二三区波多野| 国产热A欧美热A在线视频| 高h小月被几个老头调教| 精品亚洲AⅤ无码午夜在线| 色综合久久久无码中文字幕| 国产熟人av一二三区| 99精产国品一二三产区| 国内精品久久久久影院优| 芦溪县| 成人性能视频在线| a片地址|