tensorflow2知識總結---7、dropout抑制過擬合實例
一、總結
一句話總結:
操作非常簡單,直接增加dropout層即可:model.add(tf.keras.layers.Dropout(0.5))
# 增加dropout層來抑制過擬合 model = tf.keras.Sequential() model.add(tf.keras.layers.Flatten(input_shape=(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)) 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'))
二、dropout抑制過擬合實例
博客對應課程的視頻位置:
In [16]:
# 增加dropout層來抑制過擬合
model = tf.keras.Sequential() model.add(tf.keras.layers.Flatten(input_shape=(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)) 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'))
In [17]:
model.summary()
In [18]:
model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.01), loss='sparse_categorical_crossentropy', metrics=['acc']) history = model.fit(train_image,train_label,epochs=10,validation_data=(test_image,test_label))
In [19]:
plt.rcParams["font.sans-serif"]=["SimHei"] plt.rcParams["font.family"]="sans-serif" plt.plot(history.epoch, history.history.get('loss'),"r-",linewidth=2,label="訓練集:loss") plt.plot(history.epoch, history.history.get('val_loss'),"g-",linewidth=2,label="測試集:val_loss") plt.legend(loc ="upper right")
Out[19]:
In [20]:
plt.plot(history.epoch, history.history.get('acc'),"r-",linewidth=2,label="訓練集:acc") plt.plot(history.epoch, history.history.get('val_acc'),"g-",linewidth=2,label="測試集:val_acc") plt.legend(loc ="upper right")
Out[20]: