微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 VGG-16 在 CIFAR-10 数据集上表现不佳?

如何解决为什么 VGG-16 在 CIFAR-10 数据集上表现不佳?

我正在尝试使用 Tensorflow 为 CIFAR-10 数据集实现 VGG-16 卷积神经网络。但我接近训练准确率的 10%。我的代码有什么问题?

import tensorflow as tf
from tensorflow.keras import datasets
(X_train,y_train),(X_test,y_test) = datasets.cifar10.load_data()

X_train.shape,y_train.shape,X_test.shape,y_test.shape

X_train = X_train/255
X_test = X_test/255
y_train = y_train.reshape(-1,)

model = tf.keras.Sequential([
tf.keras.layers.Conv2D(filters=64,kernel_size=(3,3),activation="relu",input_shape= 
(32,32,padding="same"),tf.keras.layers.Conv2D(filters=64,tf.keras.layers.MaxPool2D(pool_size=(2,2),strides=(2,2)),tf.keras.layers.Conv2D(filters=128,tf.keras.layers.Conv2D(filters=256,tf.keras.layers.Conv2D(filters=512,tf.keras.layers.Flatten(),tf.keras.layers.Dense(4096,activation="relu"),tf.keras.layers.Dense(10,activation="softmax")
])

model.summary()

model.compile(loss=tf.keras.losses.sparse_categorical_crossentropy,optimizer=tf.keras.optimizers.Adam(),metrics=["accuracy"])

X_train[0].shape,y_train[0].shape

model.fit(X_train,y_train,epochs = 100)

解决方法

您似乎还没有找到合适的训练计划。

如果你不介意稍微改变模型,我建议在每个卷积层之后使用 Batchnorm。一般来说,使用 Batchnorm 更容易训练模型。

此外,您是否在一定数量的迭代后降低了学习率?在某些时候,太大的学习率可能不再减少您的训练错误。例如,ResNet 以 0.1 的初始学习率训练 100 个时期,然后用 0.01 训练另外 50 个时期和 0.001 再训练 50 个时期。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?