我目前正在使用tf.keras.applications中的一个模型进行训练,同时还使用了一个数据扩展层。奇怪的是,在我从applications导入模型后,扩展层不起作用。在我导入之前,扩展层确实起作用了。这是怎么回事?
而且,这是最近新版本的TF 2. 8. 0发布后才开始发生的。之前它工作得很好。
扩展层的代码是
data_augmentation = tf.keras.Sequential([
tf.keras.layers.RandomFlip("horizontal_and_vertical"),
tf.keras.layers.RandomRotation(0.5),
])
并且我使用
base_model = tf.keras.applications.MobileNetV3Small(
input_shape=(75, 50, 3), alpha=1.0,
weights='imagenet', pooling='avg', include_top=False,
dropout_rate=0.1, include_preprocessing=False)
请帮助我了解发生了什么。您可以在此笔记本电脑https://colab.research.google.com/drive/13Jd3l2CxbvIWQv3Y7CtryOdrv2IdKNxD?usp=sharing上复制代码
3条答案
按热度按时间cnh2zyt31#
我注意到tf 2.8也有同样的问题。当你测试增强层时,可以通过add training =True来解决这个问题:
原因是增强层在训练和预测(推理)中的行为不同,即它在训练中做增强,而在预测中什么也不做。理想情况下,该层应该根据情况灵活地设置training= argument。显然,上面的代码中它并不智能:它不知道您的意图是测试该层。
但我认为在构建完整模型时,仍然应该将训练参数作为默认值,让扩展层来完成这项工作。
u5rb5r592#
无法从单个输出中查看增强效果。请设置一个范围以查看增强效果。
q0qdq0h23#
让我告诉你,这里有一个很大的数据扩充修正,数据没有被扩充。
现在它应该工作了,你的图像应该被增强了。这是一个错误,应该在下一次更新中修复,我想是的。