Давайте предположим, что я хотел бы обучить генеративную сеть. Эта сеть должна распространяться в обратном направлении на основе двух функций потерь. Второй (input_XB
) - это потеря преобразования изображения (A -> A'
), только с использованием MSE. Первая потеря должна быть чем-то другим, например, в случае, если это расстояние канала Hue HSV между двумя изображениями (разница A (Hue) / A '(Hue)), или что-то совершенно другое. Разница в том, что мне потребуется внешняя предварительная обработка выходного сигнала генератора (g_model_1
), например, с помощью OpenCV, прежде чем вычислять потери.
Как мне этого добиться? Я думаю, что использование 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