主頁 > 知識(shí)庫 > 一小時(shí)學(xué)會(huì)TensorFlow2之大幅提高模型準(zhǔn)確率

一小時(shí)學(xué)會(huì)TensorFlow2之大幅提高模型準(zhǔn)確率

熱門標(biāo)簽:電話機(jī)器人適用業(yè)務(wù) 獲客智能電銷機(jī)器人 鄭州智能外呼系統(tǒng)運(yùn)營(yíng)商 不錯(cuò)的400電話辦理 南昌辦理400電話怎么安裝 佛山防封外呼系統(tǒng)收費(fèi) 哈爾濱外呼系統(tǒng)代理商 徐州天音防封電銷卡 湛江電銷防封卡

過擬合

當(dāng)訓(xùn)練集的的準(zhǔn)確率很高, 但是測(cè)試集的準(zhǔn)確率很差的時(shí)候就, 我們就遇到了過擬合 (Overfitting) 的問題. 如圖:

過擬合產(chǎn)生的一大原因是因?yàn)槟P瓦^于復(fù)雜. 下面我們將通過講述 5 種不同的方法來解決過擬合的問題, 從而提高模型準(zhǔn)確度.

Regulation

Regulation 可以幫助我們通過約束要優(yōu)化的參數(shù)來防止過擬合.

公式

未加入 regulation 的損失:

加入 regulation 的損失:

λ 和 lr (learning rate) 類似. 如果 λ 的值越大, regularion 的力度也就越強(qiáng), 權(quán)重的值也就越小.

例子

添加了 l2 regulation 的網(wǎng)絡(luò):

network = tf.keras.Sequential([
    tf.keras.layers.Dense(256, kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=tf.nn.relu),
    tf.keras.layers.Dense(128, kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=tf.nn.relu),
    tf.keras.layers.Dense(64, kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=tf.nn.relu),
    tf.keras.layers.Dense(32, kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=tf.nn.relu),
    tf.keras.layers.Dense(10)
])

動(dòng)量

動(dòng)量 (Momentum) 是指運(yùn)動(dòng)物體的租用效果. 在梯度下降的過程中, 通過在優(yōu)化器中加入動(dòng)量, 我們可以減少擺動(dòng)從而達(dá)到更優(yōu)的效果.

未添加動(dòng)量:

添加動(dòng)量:

公式

未加動(dòng)量的權(quán)重更新:

  • w: 權(quán)重 (weight)
  • k: 迭代的次數(shù)
  • α: 學(xué)習(xí)率 (learning rate)
  • ∇f(): 微分

添加動(dòng)量的權(quán)重更新:

  • β: 動(dòng)量權(quán)重
  • z: 歷史微分

例子

添加了動(dòng)量的優(yōu)化器:

optimizer = tf.keras.optimizers.SGD(learning_rate=0.02, momentum=0.9)
optimizer = tf.keras.optimizers.RMSprop(learning_rate=0.02, momentum=0.9)

注: Adam 優(yōu)化器默認(rèn)已經(jīng)添加動(dòng)量, 所以無需自行添加.

學(xué)習(xí)率遞減

簡(jiǎn)單的來說, 如果學(xué)習(xí)率越大, 我們訓(xùn)練的速度就越大, 但找到最優(yōu)解的概率也就越小. 反之, 學(xué)習(xí)率越小, 訓(xùn)練的速度就越慢, 但找到最優(yōu)解的概率就越大.

過程

我們可以在訓(xùn)練初期把學(xué)習(xí)率調(diào)的稍大一些, 使得網(wǎng)絡(luò)迅速收斂. 在訓(xùn)練后期學(xué)習(xí)率小一些, 使得我們能得到更好的收斂以獲得最優(yōu)解. 如圖:

例子

learning_rate = 0.2  # 學(xué)習(xí)率
optimizer = tf.keras.optimizers.SGD(learning_rate=learning_rate, momentum=0.9)  # 優(yōu)化器

# 迭代
for epoch in range(iteration_num):
    optimizer.learninig_rate = learning_rate * (100 - epoch) / 100  # 學(xué)習(xí)率遞減

Early Stopping

之前我們提到過, 當(dāng)訓(xùn)練集的準(zhǔn)確率仍在提升, 但是測(cè)試集的準(zhǔn)確率反而下降的時(shí)候, 我們就遇到了過擬合 (overfitting) 的問題.

Early Stopping 可以幫助我們?cè)跍y(cè)試集的準(zhǔn)確率下降的時(shí)候停止訓(xùn)練, 從而避免繼續(xù)訓(xùn)練導(dǎo)致的過擬合問題.

Dropout

Learning less to learn better

Dropout 會(huì)在每個(gè)訓(xùn)練批次中忽略掉一部分的特征, 從而減少過擬合的現(xiàn)象.

dropout, 通過強(qiáng)迫神經(jīng)元, 和隨機(jī)跳出來的其他神經(jīng)元共同工作, 達(dá)到好的效果. 消除減弱神經(jīng)元節(jié)點(diǎn)間的聯(lián)合適應(yīng)性, 增強(qiáng)了泛化能力.

例子:

network = tf.keras.Sequential([
    tf.keras.layers.Dense(256, activation=tf.nn.relu),
    tf.keras.layers.Dropout(0.5),  # 忽略一半
    tf.keras.layers.Dense(128, activation=tf.nn.relu),
    tf.keras.layers.Dropout(0.5),  # 忽略一半
    tf.keras.layers.Dense(64, activation=tf.nn.relu),
    tf.keras.layers.Dropout(0.5),  # 忽略一半
    tf.keras.layers.Dense(32, activation=tf.nn.relu),
    tf.keras.layers.Dense(10)
])

到此這篇關(guān)于一小時(shí)學(xué)會(huì)TensorFlow2之大幅提高模型準(zhǔn)確率的文章就介紹到這了,更多相關(guān)TensorFlow2模型準(zhǔn)確率內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • TensorFlow2.0使用keras訓(xùn)練模型的實(shí)現(xiàn)
  • 入門tensorflow教程之TensorBoard可視化模型訓(xùn)練
  • TensorFlow2.X使用圖片制作簡(jiǎn)單的數(shù)據(jù)集訓(xùn)練模型
  • 如何將tensorflow訓(xùn)練好的模型移植到Android (MNIST手寫數(shù)字識(shí)別)

標(biāo)簽:廣西 蕪湖 呂梁 蘭州 安康 懷化 紹興 吉安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《一小時(shí)學(xué)會(huì)TensorFlow2之大幅提高模型準(zhǔn)確率》,本文關(guān)鍵詞  一小時(shí),學(xué)會(huì),TensorFlow2,之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《一小時(shí)學(xué)會(huì)TensorFlow2之大幅提高模型準(zhǔn)確率》相關(guān)的同類信息!
  • 本頁收集關(guān)于一小時(shí)學(xué)會(huì)TensorFlow2之大幅提高模型準(zhǔn)確率的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章