问题描述
我正在尝试使用转移学习从30个类别和7200张图像(80%训练,10%验证,10%测试)的预训练模型训练模型。尽管更改了各种参数,但是我的模型总是过拟合。在阅读了此链接https://www.tensorflow.org/tutorials/images/transfer_learning#create_the_base_model_from_the_pre-trained_convnets之后,我知道即使卷积基础已冻结,批次规范化也总是更新方差。
因此,我在base_model中设置了training = false
。但是,我仍然感到困惑。我的代码正确吗?因为我的图片是使用ImageDataGenerator
进行增强的,而不像将增强和预处理用作基本模型输入的示例那样。
这是我的代码
#Create the model
inputs = keras.Input(shape=(224,224,3))
x = base_model(inputs,training=False)
x = tf.keras.layers.GlobalAveragePooling2D()(x)
outputs = tf.keras.layers.Dense((len(CLASS_NAMES)),activation='softmax')(x)
model = tf.keras.Model(inputs,outputs)
history = model.fit_generator(train_data_gen,epochs=epochs,steps_per_epoch=int(np.ceil(total_train / float(BATCH_SIZE))),validation_data=val_data_gen,validation_steps=int(np.ceil(total_val / float(BATCH_SIZE))),callbacks=[cm_callback,tensorboard_callback])
576/576 [==============================] - 157s 273ms/step - loss: 0.0075 - accuracy: 0.9996
144/144 [==============================] - 26s 181ms/step - loss: 0.0092 - accuracy: 1.0000
[0.007482105916197825,0.99956596]
[0.009182391463279297,1.0]
如果我的代码正确,验证精度是否等于1(太准确)好吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)