Fashion MNIST 数据集分类训练优化1
对于上集演示的Fashion MNIST 数据集分类训练,接着对齐进行优化1、优化其实无非就是增加其网络容量增加隐藏层或者增加层里的单元。2、关于用到Dropout抑制过拟合(1)说明之前看过宫廷剧:“后宫佳妃三千,皇上要雨露均沾”,为了防止甄嬛独受宠,要随机掐掉一些激活机会类似随机森林的思想。深度学习的过拟合已经解决,不是接下来需要研究的内容,这里主要用流行的Dropout。(2)代码,模型更改
对于上集演示的Fashion MNIST 数据集分类训练,接着对其进行优化
1、优化其实无非就是增加其网络容量
增加隐藏层或者增加层里的单元。
2、关于用到Dropout抑制过拟合
(1)说明
之前看过宫廷剧:“后宫佳妃三千,皇上要雨露均沾”,为了防止甄嬛独受宠,要随机掐掉一些激活机会
类似随机森林的思想。深度学习的过拟合已经解决,不是接下来需要研究的内容,这里主要用流行的Dropout。
(2)代码,模型更改
接着上一章,更改模型
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)) #丢弃50%随机的
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'))
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损失函数的图
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()
(3)运行结果:
分析:
测试集的loss和训练集的loss一样在下降,就是很好的。
如果训练集的loss在下降,而测试集的loss反而不下降,就是典型的过拟合问题。
同理:
测试集的准确率acc和训练集的acc一样在上升,就是很好的。
如果训练集的acc在上升,而测试集的acc反而下降,就是典型的过拟合问题。
其实防止过拟合最好的最根本的办法就是
1、增加数据集,数据集足够的时候不会有过拟合问题。这里用Dropout也是数据集有限而已。
2、或者减小网络容量也是一个方法。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)