日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07

發布時間:2024/9/15 pytorch 47 豆豆

多層感知器:

優化使用梯度下降算法






學習速率




學習速率選取原則


反向傳播



SGD


RMSprop


Adam



learning_rate=0.01

# -*- coding: utf-8 -*- # -*- coding: utf-8 -*- import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告級別,不顯示警告 import tensorflow as tf import pandas as pd import numpy as np import matplotlib.pyplot as plt# 下載數據集并劃分為訓練集和測試集 (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(10,activation="softmax"))# 編譯模型 model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.01),loss="sparse_categorical_crossentropy",metrics=["acc"]) #使用訓練集訓練模型 model.fit(train_image,train_lable,epochs=5) # # 使用測試集進行評價 # model.evaluate(test_image,test_label)


learning_rate=0.001

# -*- coding: utf-8 -*- # -*- coding: utf-8 -*- import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告級別,不顯示警告 import tensorflow as tf import pandas as pd import numpy as np import matplotlib.pyplot as plt# 下載數據集并劃分為訓練集和測試集 (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(10,activation="softmax"))# 編譯模型 model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),loss="sparse_categorical_crossentropy",metrics=["acc"]) #使用訓練集訓練模型 model.fit(train_image,train_lable,epochs=5) # # 使用測試集進行評價 # model.evaluate(test_image,test_label)

網絡優化與超參數選擇




如何提高網絡得擬合能力


# -*- coding: utf-8 -*- # -*- coding: utf-8 -*- import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 修改警告級別,不顯示警告 import tensorflow as tf import pandas as pd import numpy as np import matplotlib.pyplot as plt# 下載數據集并劃分為訓練集和測試集 (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.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),loss="sparse_categorical_crossentropy",metrics=["acc"]) #使用訓練集訓練模型 model.fit(train_image,train_lable,epochs=10) # # 使用測試集進行評價 # model.evaluate(test_image,test_label)

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))


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()

總結

以上是生活随笔為你收集整理的深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。