Керасы получают выходные данные модели после каждой партии - PullRequest
0 голосов
/ 03 октября 2018

Я использую генератор для создания последовательных обучающих данных для иерархической рекуррентной модели, которой требуются выходные данные предыдущего пакета, чтобы сгенерировать входные данные для следующего пакета.Эта ситуация аналогична аргументу Keras stateful=True, который сохраняет скрытые состояния для следующего пакета, за исключением того, что он более сложный, поэтому я не могу просто использовать его как есть.

Пока я пытался поместитьвзломать функцию потерь:

def custom_loss(y_true, y_pred):
    global output_ref
    output_ref[0] = y_pred[0].eval(session=K.get_session())
    output_ref[1] = y_pred[1].eval(session=K.get_session())

, но это не скомпилировано, и я надеюсь, что есть лучший способ.Поможет ли обратный вызов Keras?

1 Ответ

0 голосов
/ 31 декабря 2018

Извлечено из здесь :

model.compile(optimizer='adam')
# hack after compile
output_layers = [ 'gru' ]
s_name = 's'
model.metrics_names += [s_name]
model.metrics_tensors += [layer.output for layer in model.layers if layer.name in output_layers]

class my_callback(Callback):
    def on_batch_end(self, batch, logs=None):
        s_pred = logs[s_name]
        print('s_pred:', s_pred)
        return

model.fit(..., callbacks=[my_callback()])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...