让我们假设我想训练一个生成网络。该网络应基于两个损耗函数进行反向传播。第二个(input_XB
)是仅使用MSE的图像(A -> A'
)的变换损失。例如,如果是两个图像之间HSV色相通道的距离(差值A(色相)/ A'(色相))或完全不同,则第一个损失应该是其他损失。在计算损失之前,我需要使用OpenCV对生成器(g_model_1
)输出进行外部预处理。
我该如何实现?我认为将TensorFlow与渐变磁带和低级API一起使用可能会帮助我。但是有什么捷径可走,因为我的方法不能构建适当的图形,因为我没有在生成器模型上传递所有输入。
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