Как выбрать между keras.backend и keras.layers? - PullRequest
0 голосов
/ 20 декабря 2018

Я нашел много одинаковых имен в keras.backend или keras.layers, например keras.backend.concatenate и keras.layers.Concatenate.Я смутно знаю, что один для тензора, а другой для слоя.Но когда код такой большой, многие функции сбивают меня с толку тем, что является тензором или слоем.У кого-нибудь есть хорошая идея, чтобы решить эту проблему?

Один способ, который я нашел, - это сначала определить все заполнители в одной функции, но функция, принимающая ее как переменную, может возвращать слои в конце, тогда как другая функция берет этот слой.как переменная может возвращать другую переменную.

1 Ответ

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

Вы обязательно должны использовать keras.layers, если есть слой, который достигает того, что вы хотите сделать.Это связано с тем, что при построении модели слои Keras принимают в качестве входных данных только тензоры Keras (т.е. выходные данные слоев).Однако выходные данные методов в keras.backend.* не являются тензором Keras (это внутренний тензор, такой как TensorFlow Tensor), и поэтому вы не можете передать их непосредственно в слой.

Хотя,если есть операция, которую нельзя выполнить со слоем, то для выполнения этой пользовательской операции / вычисления можно использовать методы keras.backned.* в слое Lambda.

Примечание: Keras Tensor на самом деле тот же тип, что и Tensor бэкэнда (например, tf.Tensor);однако он был дополнен некоторыми дополнительными специфичными для Keras атрибутами, которые необходимы Keras при построении модели.

...