第2章 2.4 訓練網(wǎng)絡(luò)_第1頁
第2章 2.4 訓練網(wǎng)絡(luò)_第2頁
第2章 2.4 訓練網(wǎng)絡(luò)_第3頁
第2章 2.4 訓練網(wǎng)絡(luò)_第4頁
第2章 2.4 訓練網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

訓練網(wǎng)絡(luò)訓練網(wǎng)絡(luò)構(gòu)建好網(wǎng)絡(luò)之后,就需要用大量的數(shù)據(jù)對網(wǎng)絡(luò)進行訓練。訓練網(wǎng)絡(luò)的任務(wù)就是求解網(wǎng)絡(luò)中的所有可學習的參數(shù),使得網(wǎng)絡(luò)的損失越小越好。在Keras中,要選擇合適的優(yōu)化器和損失函數(shù)對網(wǎng)絡(luò)進行訓練。在手寫數(shù)字識別的例子中,使用SGD求解網(wǎng)絡(luò)的參數(shù),使用分類交叉熵損失函數(shù)。1損失函數(shù)目錄優(yōu)化器2訓練方法3優(yōu)化器優(yōu)化器是編譯Keras模型所需的兩個參數(shù)之一。學習率衰減:加快學習的一個辦法就是設(shè)置合適的學習速率,簡稱學習率。開始訓練網(wǎng)絡(luò)時,學習率比較大則能夠?qū)W習得很快,此時應(yīng)該降低學習率,使誤差不會來回擺動。畫出學習率的指數(shù)衰減圖,其中平滑的曲線是通過設(shè)置staircase=False實現(xiàn)的,即指數(shù)型下降曲線;折線型曲線是通過設(shè)置staircase=True實現(xiàn)的,即階梯式下降曲線。如下圖所示。優(yōu)化器學習算法:神經(jīng)網(wǎng)絡(luò)的學習算法就是根據(jù)大量的訓練樣本不斷更新可訓練的權(quán)重,使損失函數(shù)達到最小值的方法。神經(jīng)網(wǎng)絡(luò)的學習算法一般是基于梯度下降的,梯度下降如下圖所示。

優(yōu)化器1.SGD優(yōu)化器tf.keras.optimizers.SGD(learning_rate=0.01,momentum=0.0,nesterov=False,name='SGD',**kwargs)SGD優(yōu)化器(帶動量)的語法格式如下。常用參數(shù)及其說明參數(shù)名稱說明learning_rate接收浮點數(shù),表示學習率,默認為0.01momentum接收浮點數(shù),表示動量,可加速相關(guān)方向的梯度下降并抑制振蕩,默認為0.0nesterov接收布爾值,表示是否應(yīng)用涅斯捷羅夫動力,默認為Falsename接收字符串,表示優(yōu)化器的名稱,默認為'SGD'優(yōu)化器2.Adam優(yōu)化器Adam優(yōu)化器(帶動量)的語法格式如下。tf.keras.optimizers.Adam(learning_rate=0.001,beta_1=0.9,beta_2=0.999,epsilon=1e-07,amsgrad=False,name='Adam',**kwargs)常用參數(shù)及其說明參數(shù)名稱說明learning_rate學習率,默認為0.001beta_1第一階矩估計的指數(shù)衰減率,默認為0.9beta_2第二階矩估計的指數(shù)衰減率,默認為0.999epsilon提升數(shù)值穩(wěn)定性的一個小常數(shù),默認為1e-07amsgrad是否應(yīng)用AMSGrad變體,默認為Falsename名稱,默認為'Adam'優(yōu)化器2.其他優(yōu)化器Keras可用的優(yōu)化器的語法格式如下。optimizers.RMSprop(lr=0.001,rho=0.9,epsilon=None,decay=0.0)optimizers.Adagrad(lr=0.01,epsilon=None,decay=0.0)optimizers.Adadelta(lr=1.0,rho=0.95,epsilon=None,decay=0.0)optimizers.Adamax(lr=0.002,beta_1=0.9,beta_2=0.999,epsilon=None,decay=0.0)optimizers.Nadam(lr=0.002,beta_1=0.9,beta_2=0.999,epsilon=None,schedule_decay=0.004)Keras優(yōu)化器的公共參數(shù)clipnorm和clipvalue能在所有的優(yōu)化器中使用,用于控制梯度裁剪。1損失函數(shù)目錄優(yōu)化器2訓練方法3損失函數(shù)pile(loss='sparse_categorical_crossentropy',optimizer='adam')除了優(yōu)化器,損失函數(shù)也是編譯Keras模型時所需的兩個參數(shù)之一。所有內(nèi)置的損失函數(shù)都可以通過其字符串標識符傳遞,設(shè)置內(nèi)置損失函數(shù)的語法格式如下。損失函數(shù)通常是通過實例化損失類來創(chuàng)建的,也可以以函數(shù)的參數(shù)形式提供,如sparse_categorical_crossentropy,即在類的名字的單詞之間加下畫線并且首字母小寫。使用損失類可以在實例化時傳遞配置參數(shù),如下。loss_fn=keras.losses.SparseCategoricalCrossentropy(from_logits=True)損失函數(shù)1.獨立使用損失函數(shù)損失函數(shù)的通用表達式為loss_fn(y_true,y_pred,sample_weight=None)。y_true是真實標簽,大小為(batch_size,d0,…,dN)y_pred是預測值,大小為(batch_size,d0,…,dN)sample_weight是每個樣本的加權(quán)系數(shù)默認情況下,損失函數(shù)會為每個輸入樣本返回一個標量損失值。但是,損失類實例具有reduction構(gòu)造函數(shù)參數(shù),該參數(shù)默認值為“sum_over_batch_size”(即平均值),允許的值為“sum_over_batch_size”“sum”“none”。“sum_over_batch_size”表示損失實例將返回批中每個樣本損失的平均值“sum”表示損失實例將返回批中每個樣本損失的總和“none”表示損失實例將返回每個樣本損失的完整數(shù)組。損失函數(shù)2.自定義損失函數(shù)任何具有y_true和y_pred兩個參數(shù)并且返回一個和輸入批大小相同的數(shù)組的函數(shù)都可以作為損失函數(shù)損失函數(shù)(如tf.keras.losses.mean_squared_error)與默認損失類實例(如tf.keras.losses.MeanSquaredError)之間有重要區(qū)別。損失函數(shù)不執(zhí)行歸約,默認情況下,損失類實例執(zhí)行歸約“sum_over_batch_size”3.add_loss()方法損失函數(shù)可以由傳入網(wǎng)絡(luò)的complie函數(shù)的第2個參數(shù)進行構(gòu)造,也可以在自定義層的call函數(shù)中使用add_loss()方法構(gòu)造,損失函數(shù)4.預定義的損失函數(shù)

損失函數(shù)預定義的損失函數(shù)均方誤差損失函數(shù)平均絕對誤差損失函數(shù)平均絕對比例誤差損失函數(shù)均方對數(shù)誤差損失函數(shù)鉸鏈損失函數(shù)平方鉸鏈損失函數(shù)分類鉸鏈損失函數(shù)KL散度損失函數(shù)泊松損失函數(shù)余弦逼近損失函數(shù)1損失函數(shù)目錄優(yōu)化器2訓練方法3訓練方法1.compile函數(shù)compile(optimizer,loss=None,metrics=None,loss_weights=None,sample_weight_mode=None,weighted_metrics=None,target_tensors=None)compile函數(shù)用于配置訓練網(wǎng)絡(luò),語法格式如下。參數(shù)名稱說明optimizer接收字符串(優(yōu)化器名)或優(yōu)化器實例,無默認值loss接收字符串(目標函數(shù)名)或目標函數(shù)。如果網(wǎng)絡(luò)具有多個輸出,則可以通過傳遞損失函數(shù)的字典或列表,在每個輸出上使用不同的損失。網(wǎng)絡(luò)將最小化的損失值是所有單個損失的總和。默認為None常用參數(shù)及其說明訓練方法參數(shù)名稱說明metrics接收字符串或函數(shù),表示在訓練和測試期間的網(wǎng)絡(luò)評估標準。通常會使用metrics=['accuracy']。要為多輸出網(wǎng)絡(luò)的不同輸出指定不同的評估標準,還可以傳遞一個字典,如metrics={'output_a':'accuracy'}。默認為Noneloss_weights接收指定標量系數(shù)(浮點數(shù))的列表或字典,用以衡量損失函數(shù)對不同的網(wǎng)絡(luò)輸出的貢獻。網(wǎng)絡(luò)將最小化的損失值是由loss_weights系數(shù)加權(quán)的總和損失。如果是列表,那么它應(yīng)該是與網(wǎng)絡(luò)輸出相對應(yīng)的1:1映射。如果是字典,那么應(yīng)該把輸出的名稱(字符串)映射到標量系數(shù)。默認為Nonesample_weight_mode接收字符串,表示權(quán)重加權(quán)的模式。如果需要執(zhí)行按時間步采樣權(quán)重(2D權(quán)重),請將其設(shè)置為"temporal"。取默認值None時,為采樣權(quán)重(1D權(quán)重)。如果網(wǎng)絡(luò)有多個輸出,則可以通過傳遞模式的字典或列表,以在每個輸出上使用不同的sample_weight_mode。默認為None常用參數(shù)及其說明訓練方法參數(shù)名稱說明weighted_metrics接收列表,表示在訓練和測試期間,由sample_weight或class_weight評估和加權(quán)的度量標準列表。默認為Nonetarget_tensors默認情況下,Keras將為模型的目標數(shù)據(jù)創(chuàng)建一個占位符,在訓練過程中將使用目標數(shù)據(jù)。相反,如果想使用自己的目標張量(反過來說,Keras在訓練期間不會載入這些目標張量的外部numpy數(shù)據(jù)),可以通過target_tensors參數(shù)指定它們。它可以是單個張量(單輸出模型)、張量列表,或一個映射輸出名稱到目標張量的字典。默認為None常用參數(shù)及其說明訓練方法2.fit函數(shù)fit(x=None,y=None,batch_size=None,epochs=1,verbose=1,callbacks=None,validation_split=0.0,validation_data=None,shuffle=True,class_weight=None,sample_weight=None,initial_epoch=0,steps_per_epoch=None,validation_steps=None)fit函數(shù)以給定的輪次(數(shù)據(jù)集上的迭代次數(shù))訓練網(wǎng)絡(luò),并返回一個History對象。fit函數(shù)的語法格式如下。參數(shù)名稱說明x接收訓練數(shù)據(jù)的numpy數(shù)組(如果網(wǎng)絡(luò)只有一個輸入),或是numpy數(shù)組的列表(如果網(wǎng)絡(luò)有多個輸入)。如果網(wǎng)絡(luò)中的輸入層已被命名,也可以傳遞一個字典,將輸入層的名稱映射到numpy數(shù)組。如果從本地框架張量(例如TensorFlow數(shù)據(jù)張量)饋送數(shù)據(jù),x可以是None。默認為None常用參數(shù)及其說明訓練方法參數(shù)名稱說明y接收目標數(shù)據(jù)(標簽)的numpy數(shù)組(如果網(wǎng)絡(luò)只有一個輸出),或是numpy數(shù)組的列表(如果網(wǎng)絡(luò)有多個輸出)。如果網(wǎng)絡(luò)中的輸出層已被命名,也可以傳遞一個字典,將輸出層的名稱映射到numpy數(shù)組。如果從本地框架張量(例如TensorFlow數(shù)據(jù)張量)饋送數(shù)據(jù),y可以是None。默認為Nonebatch_size接收整數(shù),表示每次梯度更新的樣本數(shù)。如果未指定,默認為Noneepochs接收整數(shù),表示訓練網(wǎng)絡(luò)的迭代輪次。一次是在整個x和y上的一輪迭代。請注意,與initial_epoch一起使用時,epochs被理解為“最終輪次”。網(wǎng)絡(luò)并不是訓練了epochs輪,而是到第epochs輪停止訓練。默認為1verbose接收0、1或2,表示日志顯示模式。0為不顯示,1為顯示進度條,2為每輪訓練顯示一行。默認為1常用參數(shù)及其說明訓練方法參數(shù)名稱說明callbacks接收一系列的keras.callbacks.Callback實例,表示一系列可以在訓練時使用的回調(diào)函數(shù)。默認為Nonevalidation_split接收0和1之間的浮點數(shù),表示用作驗證集的訓練數(shù)據(jù)的比例。網(wǎng)絡(luò)將分出一部分不會被訓練的驗證數(shù)據(jù),并將在每一輪訓練結(jié)束時評估這些驗證數(shù)據(jù)的誤差和任何其他網(wǎng)絡(luò)指標。驗證數(shù)據(jù)是混洗之前x和y數(shù)據(jù)的最后一部分樣本中。默認為0.0validation_data接收元組(x_val,y_val)或元組(x_val,y_val,val_sample_weights),用于評估損失,以及在每輪訓練結(jié)束時的任何網(wǎng)絡(luò)度量指標。網(wǎng)絡(luò)將不會在這個數(shù)據(jù)上進行訓練。這個參數(shù)會覆蓋validation_split。默認為None常用參數(shù)及其說明訓練方法參數(shù)名稱說明shuffle接收布爾值,表示是否在每輪訓練之前混洗數(shù)據(jù);也可以接收字符串(batch)。batch是處理HDF5數(shù)據(jù)限制的特殊選項,它對一個批內(nèi)部的數(shù)據(jù)進行混洗。當steps_per_epoch的值非None時,這個參數(shù)無效。默認為Trueclass_weight接收字典,表示從類索引(整數(shù))到權(quán)重(浮點)值的映射,用于加權(quán)損失函數(shù)(僅在訓練期間)。這可能有助于告訴網(wǎng)絡(luò)“更多關(guān)注”來自代表性不足的類的樣本。默認為Nonesample_weight接收訓練樣本的可選numpy權(quán)重數(shù)組,用于對損失函數(shù)進行加權(quán)(僅在訓練期間)??梢詡鬟f與輸入樣本長度相同的平坦(1D)numpy數(shù)組(權(quán)重和樣本之間的1∶1映射);或在時序數(shù)據(jù)的情況下,可以傳遞尺寸為(samples,sequence_length)的2D數(shù)組,以對每個樣本的每個時間步施加不同的權(quán)重。在這種情況下,應(yīng)該確保在compile函數(shù)中指定sample_weight_mode="temporal"。默認為None常用參數(shù)及其說明訓練方法參數(shù)名稱說明initial_epoch接收整數(shù),表示開始訓練的輪次(有助于恢復之前的訓練)。默認為0steps_per_epoch接收整數(shù),表示在聲明一個輪次完成并開始下一個輪次之前的總步數(shù)(批大?。?。使用TensorFlow數(shù)據(jù)張量等輸入張量進行訓練時,取默認值None時,等于數(shù)據(jù)集中樣本的數(shù)量除以批的大小;如果無法確定,則取1validation_steps接收整數(shù),表示要驗證的總步數(shù)(批大?。?,只有在指定了steps_per_epoch時才有用。默認為None常用參數(shù)及其說明訓練方法3.evaluate函數(shù)evaluate(x=None,y=None,batch_size=None,verbose=1,sample_weight=None,steps=None,callbacks=None,max_queue_size=10,workers=1,use_multiprocessing=False,return_dict=False)evaluate函數(shù)在測試模式下返回網(wǎng)絡(luò)的誤差值和評估標準值,計算是分批進行的。函數(shù)返回測試誤差標量(如果網(wǎng)絡(luò)只有一個輸出且沒有評估標準)或標量列表(如果網(wǎng)絡(luò)具有多個輸出或評估標準)。屬性model.metrics_names將提供標量輸出的顯示標簽。evaluate函數(shù)的語法格式如下。訓練方法參數(shù)名稱說明x接收測試數(shù)據(jù)的numpy數(shù)組(如果網(wǎng)絡(luò)只有一個輸入),或是numpy數(shù)組的列表(如果網(wǎng)絡(luò)有多個輸入)。如果網(wǎng)絡(luò)中的輸入層已被命名,也可以傳遞一個字典,將輸入層名稱映射到numpy數(shù)組。如果從本地框架張量(例如TensorFlow數(shù)據(jù)張量)饋送數(shù)據(jù),x可以是None。默認為Noney接收目標數(shù)據(jù)(標簽)的numpy數(shù)組,或numpy數(shù)組的列表(如果網(wǎng)絡(luò)具有多個輸出)。如果網(wǎng)絡(luò)中的輸出層已被命名,也可以傳遞一個字典,將輸出層的名稱映射到numpy數(shù)組。如果從本地框架張量(例如TensorFlow數(shù)據(jù)張量)饋送數(shù)據(jù),y可以是None。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論