Tensorflow2 model.compile()理解
在TensorFLow2中進(jìn)行神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練主要包括以下幾個(gè)主要的步驟:
- 導(dǎo)入相關(guān)模塊import
- 準(zhǔn)備數(shù)據(jù),拆分訓(xùn)練集train、測(cè)試集test
- 搭建神經(jīng)網(wǎng)絡(luò)模型model (兩種方法:Sequential或自定義模型class)
- 模型編譯model.compile()
- 模型訓(xùn)練model.fit()
- 查看模型model.summary()
- 模型評(píng)價(jià)
- 模型預(yù)測(cè)model.predict()
model.compile()的作用就是為搭建好的神經(jīng)網(wǎng)絡(luò)模型設(shè)置損失函數(shù)loss、優(yōu)化器optimizer、準(zhǔn)確性評(píng)價(jià)函數(shù)metrics。
這些方法的作用分別是:
- 損失函數(shù)和優(yōu)化器用在反向傳播的時(shí)候,我們會(huì)求損失函數(shù)對(duì)訓(xùn)練變量的導(dǎo)數(shù),即梯度,然后根據(jù)選擇的優(yōu)化器來(lái)確定參數(shù)更新公式,根據(jù)公式對(duì)可訓(xùn)練參數(shù)進(jìn)行更新。
- 準(zhǔn)確性評(píng)價(jià)函數(shù)用在評(píng)估模型預(yù)測(cè)的準(zhǔn)確性。在模型訓(xùn)練的過(guò)程中,我們會(huì)記錄模型在訓(xùn)練集、驗(yàn)證集上的預(yù)測(cè)準(zhǔn)確性,之后會(huì)據(jù)此繪制準(zhǔn)確率隨著訓(xùn)練次數(shù)的變化曲線。通過(guò)查看和對(duì)比訓(xùn)練集、測(cè)試集隨著訓(xùn)練次數(shù)的準(zhǔn)確率曲線,我們能發(fā)現(xiàn)模型是否是過(guò)擬合、欠擬合,或者也可以發(fā)現(xiàn)多少輪后可以停止模型訓(xùn)練了。
由上可以看出,神經(jīng)網(wǎng)絡(luò)模型建模訓(xùn)練的過(guò)程中,核心的靈魂環(huán)節(jié)就是搭建模型和編譯compile了。所以,這是非常非常重要的一個(gè)模塊。
1、首先,上代碼,直觀看下model.compile()在神經(jīng)網(wǎng)絡(luò)建模中的使用示例
#model.compile()配置模型訓(xùn)練方法 model.compile( optimizer = tf.keras.optimizers.SGD(lr = 0.1), #使用SGD優(yōu)化器,學(xué)習(xí)率為0.1loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False), #配置損失函數(shù)metrics = ['sparse_categorical_accuracy'] #標(biāo)注準(zhǔn)確性評(píng)價(jià)指標(biāo) )2、解讀model.compile()中配置方法
compile(optimizer, #優(yōu)化器loss=None, #損失函數(shù)metrics=None, # ["準(zhǔn)確率”]loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)2.1 ?loss可以是字符串形式給出的損失函數(shù)的名字,也可以是函數(shù)形式
例如:”mse" 或者 tf.keras.losses.MeanSquaredError()
? ? ? ? ? ?"sparse_categorical_crossentropy" ?或者 ?tf.keras.losses.SparseCatagoricalCrossentropy(from_logits = False)
? ?損失函數(shù)經(jīng)常需要使用softmax函數(shù)來(lái)將輸出轉(zhuǎn)化為概率分布的形式,在這里from_logits代表是否將輸出轉(zhuǎn)為概率分布的形式,為False時(shí)表示轉(zhuǎn)換為概率分布,為True時(shí)表示不轉(zhuǎn)換,直接輸出
2.2 ?optimizer可以是字符串形式給出的優(yōu)化器名字,也可以是函數(shù)形式,使用函數(shù)形式可以設(shè)置學(xué)習(xí)率、動(dòng)量和超參數(shù)
例如:“sgd” ? 或者 ? tf.optimizers.SGD(lr = 學(xué)習(xí)率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?decay = 學(xué)習(xí)率衰減率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? momentum = 動(dòng)量參數(shù))
? ? ? ? ? ?“adagrad" ?或者 ?tf.keras.optimizers.Adagrad(lr = 學(xué)習(xí)率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?decay = 學(xué)習(xí)率衰減率)
? ? ? ? ? ? ”adadelta" ?或者 ?tf.keras.optimizers.Adadelta(lr = 學(xué)習(xí)率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?decay = 學(xué)習(xí)率衰減率)
? ? ? ? ? ? ?“adam" ?或者 ?tf.keras.optimizers.Adam(lr = 學(xué)習(xí)率,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? decay = 學(xué)習(xí)率衰減率)
2.3 Metrics神經(jīng)網(wǎng)絡(luò)模型的準(zhǔn)確性評(píng)價(jià)指標(biāo)
例如:
? ? ? ? "accuracy" : y_ 和 y 都是數(shù)值,如y_ = [1] y = [1] ?#y_為真實(shí)值,y為預(yù)測(cè)值
? ? ? ? “sparse_accuracy":y_和y都是以獨(dú)熱碼 和概率分布表示,如y_ = [0, 1, 0], y = [0.256, 0.695, 0.048]
? ? ? ? "sparse_categorical_accuracy" :y_是以數(shù)值形式給出,y是以 獨(dú)熱碼給出,如y_ = [1], y = [0.256 0.695, 0.048]
?
總結(jié)
以上是生活随笔為你收集整理的Tensorflow2 model.compile()理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MindMapper中的鱼骨图该怎样进行
- 下一篇: 漫画网站服务器,漫画网站服务器配置