深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07
生活随笔
收集整理的這篇文章主要介紹了
深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多層感知器:
優化使用梯度下降算法
學習速率
學習速率選取原則
反向傳播
SGD
RMSprop
Adam
learning_rate=0.01
learning_rate=0.001
網絡優化與超參數選擇
如何提高網絡得擬合能力
Dropout 抑制過擬合與網絡超參數總原則
為什么說Dropout可以解決過擬合
增加層數,直到過擬合
import tensorflow as tf import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline # 下載數據集并劃分為訓練集和測試集 (train_image,train_lable),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data() # 歸一化 train_image=train_image/255 test_image=test_image/255 # 建立模型 model = tf.keras.Sequential() model.add(tf.keras.layers.Flatten(input_shape=(28,28))) # 28*28 model.add(tf.keras.layers.Dense(128,activation="relu")) model.add(tf.keras.layers.Dense(128,activation="relu"))# 增加隱藏層提高擬合能力 model.add(tf.keras.layers.Dense(128,activation="relu")) model.add(tf.keras.layers.Dense(10,activation="softmax")) model.summary() # 編譯模型 model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),loss="sparse_categorical_crossentropy",metrics=["acc"]) # 使用訓練集訓練模型 并驗證測試集 history = model.fit(train_image,train_lable,epochs=10,validation_data=(test_image,test_label)) history.history.keys() # [訓練集'loss', 'acc', 測試集'val_loss', 'val_acc'] # 如下圖過擬合現象,在訓練集上一直在下降,在測試集上到7層的時候反而上升了 plt.plot(history.epoch,history.history.get("loss"),label="loss") plt.plot(history.epoch,history.history.get("val_loss"),label="val_loss") plt.legend() # 通過正確率繪圖反映模型在訓練集上正確率一直在上升,在測試集上反而下降了 plt.plot(history.epoch,history.history.get("acc"),label="acc") plt.plot(history.epoch,history.history.get("val_acc"),label="val_acc") plt.legend()
使用Dropout 抑制過擬合
import tensorflow as tf import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline # 下載數據集并劃分為訓練集和測試集 (train_image,train_lable),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data() # 歸一化 train_image=train_image/255 test_image=test_image/255 # 建立模型 (3層128個隱藏單元) model = tf.keras.Sequential() model.add(tf.keras.layers.Flatten(input_shape=(28,28))) # 28*28 model.add(tf.keras.layers.Dense(128,activation="relu")) model.add(tf.keras.layers.Dropout(0.5)) model.add(tf.keras.layers.Dense(128,activation="relu"))# 增加隱藏層提高擬合能力 model.add(tf.keras.layers.Dropout(0.5)) # 添加Dropout層抑制過擬合,隨機丟棄50%數據 model.add(tf.keras.layers.Dense(128,activation="relu")) model.add(tf.keras.layers.Dropout(0.5)) model.add(tf.keras.layers.Dense(10,activation="softmax")) # 編譯模型 model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),loss="sparse_categorical_crossentropy",metrics=["acc"]) # 使用訓練集訓練模型 并驗證測試集 history = model.fit(train_image,train_lable,epochs=10,validation_data=(test_image,test_label))
總結
以上是生活随笔為你收集整理的深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习-Tensorflow2.2-深
- 下一篇: 深度学习-Tensorflow2.2-深