Как запустить модель keras дважды до потери? - PullRequest
0 голосов
/ 28 января 2019

Я хочу вычислить функцию потерь, которая использует выходные данные сети дважды на разных входах.Например, как гипотетически,

first_output = model(first_input)
second_output = model(second_input)
loss = mean_absolute_error(first_output, second_output)

Как этого добиться в tenorflow или keras?

Обновление: Спасибо, ребята, за ответы.Я хочу переопределить эту бумагу в кератах или тензорном потоке.Как объясняется в нем, «критик» сеть, которая является дискриминатором в GAN, имеет два входа и проходит через них один за другим и вычисляет функцию потерь в зависимости от выходов и вычисляет градиент.Основная проблема в том, как сделать это возможным в тензор-флоу или керасе?

1 Ответ

0 голосов
/ 28 января 2019

Вы можете попробовать использовать keras.layers.merge.Я использовал это раньше для создания сиамских сетей с чем-то вроде:

first_output = model(first_input)
second_output = model(second_input)
mae = lambda x: mean_absolute_error(x[0], x[1])
distance = merge(inputs=[first_output, second_output],
                 mode=mae,
                 output_shape=lambda x: x[0],
                 name='mean_absolute_error')

Для примера с сиамской сетью вы обычно делали бы некоторый прогноз на эту меру расстояния с помощью чего-то вроде:

prediction = Dense(2, activation='softmax', name='prediction')(distance)
model = Model([first_input, second_input], prediction, name='siamese_net')
model.compile(optimizer=Adam(),
              loss=some_loss_function)

с использованием keras.models.Model и keras.layers.Dense для этого примера.

Обратите внимание, что keras.layers.merge (как мне кажется) устарело в последних версиях KerasЭто действительно позор.Я думаю, чтобы сделать нечто подобное с самыми современными Keras, вам нужно будет использовать keras.layers.Concatenate, чтобы объединить два результата, а затем keras.layers.Lambda, чтобы применить функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...