如何解决使用Imagedatagenerator时的多输出模型
是否可以将Imagedatagenerator用于具有多个输出的flow_from_directory?
我想像下面的图片一样散布模型。 我的问题是,左侧的输出是class_mode = categorical,其他的是二进制。我已经可以编译模型了,但是如果我想使用flow_from_directory,我不知道如何处理标签。 有什么办法可以将flow_from_directory与多个输出一起使用?
解决方法
您可以像平常一样使用ImageDataGenerator。您将必须使用Keras功能API。让我们看一下这个示例,我们将在其中使用转移学习,但我将保留与您的网络相同的最终结构。
base_model = MobileNetV2(weights='imagenet',include_top=False,input_shape=(400,400,3))
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Flatten(x)
x1 = Dense(1024,activation='relu')(x)
output1 = Dense(20,activation='softmax',name='toutput')(x1)
y = Dense(512,activation='relu')(x)
y = Dense(512,activation='relu')(y)
output2 = Dense(2,name='r_output')(y)
output3 = Dense(4,activation='sigmoid',name='ri_output')(y)
output4 = Dense(12,name='li_output')(y)
现在,网络具有4张输出,就像您的图片一样。现在我们可以编译并为每个输出提供自己的损失函数。我们可以通过其“名称”来引用每个输出。
optimizer = Adam(learning_rate=.0001)
losses = {
'toutput': 'categorical_crossentropy','r_output': "mean_absolute_error",'ri_output': "mean_absolute_error",'li_output': "mean_squared_error",}
如果需要特定指标,可以执行以下操作:
model.compile(optimizer=optimizer,loss=losses,metrics={'toutput':'accuracy',...)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。