tensorflow: как создать константный тензор той же формы, что и заполнитель

У меня есть место для ввода:

Y = tf.placeholder(dtype=tf.float32, shape=(None, n_outputs))

Теперь я хочу создать константу той же формы Y:

w = Y.get_shape()
zero = tf.constant(np.zeros(w), dtype=tf.float32)

Возврат ошибки:

__index__ returned non-int (type NoneType)

person Yan Zhao    schedule 06.12.2017    source источник


Ответы (3)


Нашел ответ в другом сообщении tensorflow-constant-with-variable-size

zero = tf.fill(tf.shape(Y), 0.0)
person Yan Zhao    schedule 08.12.2017

Если вы хотите заполнить свой тензор нулями или единицами, вы можете использовать методы tf.zeros_like и tf.ones_like в качестве сокращения для tf.fill.

a = tf.constant([0, 1, 2, 3, 4])

a_zeros = tf.zeros_like(a)
a_zeros
>>> <tf.Tensor: shape=(5,), dtype=int32, numpy=array([0, 0, 0, 0, 0], dtype=int32)>
person ericburdett    schedule 10.11.2020

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

zero = tf.constant(0, dtype=tf.float32, shape(none, n_outputs))

Я думаю, что из-за того, что заполнитель не передал никаких данных, поэтому вы получаете сообщение об ошибке

person redp    schedule 06.12.2017
comment
Я попробовал вашу идею: ноль = tf.constant(0, dtype=tf.float32, shape = (None, n_outputs)), здесь аргумент ошибки int() должен быть строкой, байтоподобным объектом или числом, не «Неттип». - person Yan Zhao; 06.12.2017
comment
избавиться от нет, может быть - person redp; 06.12.2017
comment
просто иметь форму (n_outputs) - person redp; 06.12.2017