让我们假设我想训练一个生成网络,该网络应基于两个损失函数进行反向支持。第二个(input_XB )
是仅使用MSE的图像(A-> A´)的变换损失。第一个损失应该是其他情况,例如在两个图像(difference A(Hue)/A´(Hue))
之间的HSV色相通道的距离或完全不同的情况下。在计算损失之前,我需要对生成器(g_model_1)
输出进行外部预处理,例如使用opencv进行这种预处理。
我该如何实现?我知道将tensorflow与gradient-tape
和低级api-stuff一起使用可以适当地帮助我。但是有什么捷径可走,因为我的方法无法构建适当的图形,导致我没有将所有输入传递给生成器模型。
def define_composite_model_B(g_model_1, image_shape,image_shape2):
g_model_1.trainable = True
# discriminator outsorced
input_A = Input(shape=image_shape2)
# transformation loss
input_XB = Input(shape=image_shape)
B_fake=g_model_1(input_XB)
model = Model([input_A,input_XB],[input_A,B_fake])
opt = Adam(lr=0.0002, beta_1=0.5)
model.compile(loss=['binary_crossentropy','mse'], optimizer=opt)
model.summary()
return model