Разница между выводом слоя Keras и вводом - PullRequest
1 голос
/ 06 июня 2019

Я занимаюсь переводным обучением и замечаю, что нет никакой разницы между:

letterModel = Model(inputs=trained.get_layer('input').output, outputs = output)

и

letterModel = Model(inputs=trained.input, outputs=output)

Это правда? Я не могу понять, как выходной слой ввода может быть использован в качестве ввода новой модели.

1 Ответ

1 голос
/ 06 июня 2019

Ваше предположение кажется верным.trained.get_layer('input').output и trained.input равны Тензорам.Для проверки я загрузил объект Keras Model:

>>> import tensorflow as tf
>>> model = tf.keras.models.load_model('model.h5')

1) Получение первого Input слоя из модели и печать его выходного тензора.

Примечание:Вы использовали model.get_layer( 'input' ), чтобы получить входной слой для модели.Я использовал model.layers[0] для той же цели.

>>> model.layers[0].output
<tf.Tensor 'input_1:0' shape=(?, 49152) dtype=float32>

2) Аналогичным образом, печатая входной тензор model.

>>> model.input
[<tf.Tensor 'input_1:0' shape=(?, 49152) dtype=float32>, <tf.Tensor 'input_2:0' shape=(?, 49152) dtype=float32>]

Печатная модельсписок из двух тензоров, так как модель имеет два слоя Input.Как вы можете видеть, 1-й Тензор равен Тензору, указанному в (1).

3) Мы можем проверить это с помощью выражения Boolean.

>>> model.input[0] == model.layers[0].output
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...