Как сделать нарезанное назначение в Keras (используя TensorFlow в качестве бэкэнда) - PullRequest
0 голосов
/ 11 апреля 2019

Например,

a = Input(...)
b = keras.layers.Conv2D(...)(a)
c = keras.backend.zeros(...)

c[...].assign(b[...])

Поскольку он используется до компиляции модели, когда я пытаюсь использовать функцию assign() (это функция TensorFlow), возникает ошибка: 'Tensor'Объект не имеет атрибута «назначить».

Вероятно, это связано с тем, что перед компиляцией модели первый dim переменной равен None.Итак, есть ли способ сделать нарезанное назначение?

1 Ответ

1 голос
/ 11 апреля 2019

Как правило, тензоры TensorFlow не присваиваются. Однако, согласно официальной функции docs , tf.assign() работает только с изменяемыми тензорами, которые должны быть из узла Variable. Итак, код ниже работает. Остальное будет сильно зависеть от вашего конкретного случая.

var1 = tf.keras.backend.zeros(1,1)
var2 = var1[0].assign(1)

sess = tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(var2))

Вы можете найти этот ответ полезным Как сделать назначение срезов в Tensorflow

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