有没有人用CIFAR-10从头开始训练移动网络V1?你的最大准确度是多少?在经历了110个时代之后,我被困在了70%的地方。下面是我创建模型的方法。然而,我的训练准确率在99%以上。
#create mobilenet layer
MobileNet_model = tf.keras.applications.MobileNet(include_top=False, weights=None)
# Must define the input shape in the first layer of the neural network
x = Input(shape=(32,32,3),name='input')
#Create custom model
model = MobileNet_model(x)
model = Flatten(name='flatten')(model)
model = Dense(1024, activation='relu',name='dense_1')(model)
output = Dense(10, activation=tf.nn.softmax,name='output')(model)
model_regular = Model(x, output,name='model_regular')
我在LR= 0.001中使用了Adam优化器,amsgrad = True和批处理大小= 64。也是标准化像素数据除以255.0。我不使用任何数据增强。
optimizer1 = tf.keras.optimizers.Adam(lr=0.001, amsgrad=True)
model_regular.compile(optimizer=optimizer1, loss='categorical_crossentropy', metrics=['accuracy'])
history = model_regular.fit(x_train, y_train_one_hot,validation_data=(x_test,y_test_one_hot),batch_size=64, epochs=100) # train the model
我认为我应该得到至少75%,根据https://arxiv.org/abs/1712.04698是,我做了什么错误,或这是预期的准确性后100个历次。这是我的验证准确性图。
发布于 2018-12-07 16:58:09
Mobilenet是为了训练大得多的Imagenet而设计的,因此在Cifar10上进行训练将不可避免地导致过度拟合。我建议你把训练和验证/评估的损失(不是精明的)都画出来,努力训练达到99%的训练准确率,然后观察验证损失。如果这是过度拟合,你会看到,验证损失实际上将增加后,达到最小。
有几件事要尽量减少过度适应:
还有一些常见的训练技巧:
通过超参数搜索,得到了0.85的评价损失。我没有使用Keras,而是使用Tensorflow自己编写的Mobilenet。
发布于 2019-06-28 08:17:35
OP询问了MobileNetv1的情况。自从MobileNetv2出版以来,这里是关于CIFAR-10 -培训MobileNetv2的最新情况。
1) MobileNetv2主要用于工作在ImageNet上,初始图像分辨率为224x224。GlobalAvgPool2D (倒数第二层)得到了Cx7x7的特征图,其中C是滤波器的个数(MobileNetV2为1280)。
2)对于CIFAR10,我将前三层的步幅改为1,这样GlobalAvgPool2D就得到了Cx8x8的特征图。其次,我用0.25训练了宽度参数(影响网络的深度)。我在mxnet (动物园/分类器.)中接受过混搭训练。这使我得到了93.27的验证精度。
3)另一个似乎适用于CIFAR-10的MobileNetV2实现是在这里提供的- PyTorch-CIFAR,报告的准确性为94.43。这个实现改变了最初两层中的步长,将分辨率降到1,并且它使用了用于ImageNet的通道的全部宽度。
4)此外,我在CIFAR-10上训练了一个MobileNetV2,混和,而只将第一个conv层的步长从2改为1,并使用了完全深度(宽度parameter==1.0)。因此,GlobalAvgPool2D (倒数第二层)得到了Cx2x2的特征映射。这使我的准确度达到92.31。
https://stackoverflow.com/questions/52209851
复制相似问题