首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么tensorflow/keras与培训和验证指标相去甚远?

为什么tensorflow/keras与培训和验证指标相去甚远?
EN

Stack Overflow用户
提问于 2021-09-03 17:14:07
回答 1查看 33关注 0票数 0

对我的项目的描述,我正在尝试训练一个网络,它可以识别包含从0到9的数字的图片,并将其分类。我的模型如下

代码语言:javascript
复制
model = Sequential(
[
    tf.keras.applications.MobileNetV2(include_top=False, input_shape=(224, 224, 3)),
    Flatten(),
    Dense(128),  LeakyReLU(alpha=.3),
    Dense(128),  LeakyReLU(alpha=.3),
    Dense(128),  LeakyReLU(alpha=.3),
    Dense(128),  LeakyReLU(alpha=.3),
    Dense(10, activation='softmax')
]

)

代码语言:javascript
复制
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['categorical_accuracy','accuracy','mae']

)

我不认为这是来自数据生成器的数据生成器的问题,该生成器使用opencv的putText函数创建带有数字的新图片,使用随机字体、字体大小/粗细以及随机旋转和移动,这意味着所有数据都是完全唯一的。我也在视觉上验证了数据,看起来没有什么异常。我做了两个实验。首先,我创建了两个独立的生成器,一个训练生成器和一个验证生成器,在纪元的末尾,以前的验证数据变成了训练数据,并为验证创建了新的数据,但是当这种情况发生时,我根本没有看到训练指标下降。接下来,我用一组静态训练数据训练模型,它使用完全相同的数据进行验证。

train_x,train_y=new_data(3200)

列车_x=列车_x/255

历史记录= model.fit(train_x,train_y,steps_per_epoch=steps,epochs=15,verbose=1,validation_data=(train_x,train_y))

然而,在这种情况下,尽管是完全相同的数据,但验证指标比附加图像中显示的训练指标差得多。有人知道这是怎么回事吗?我是不是误解了keras的训练过程?

enter image description here

EN

回答 1

Stack Overflow用户

发布于 2021-09-04 01:43:09

问题出在MobileNetV2模型中的批处理归一化层,特别是批处理归一化动量参数,如中所述:

fit() works as expected but then during evaluate() model performs at chance

一个快速的解决方法是将.999的默认动量更改为.9

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69048548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档