Размер заполнителя TensorFlow
Я запутался в том, как использовать заполнитель для пакетного обучения. В моем коде входное изображение имеет размер 3 x 3. Чтобы выполнить пакетное обучение, я устанавливаю tf.placeholder(tf.float32,shape=[None,3,3])
,
Когда я пытаюсь дать партии 3х3 в качестве входных данных, TensorFlow выдает ошибку, которая
Cannot feed value of shape (3, 3) for Tensor u'Placeholder_1:0', which has shape '(?, 3, 3).
Ниже приведен код
input = np.array([[1,1,1],[1,1,1],[1,1,1]])
placeholder = tf.placeholder(tf.float32,shape=[None,3,3])
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
sess.run(placeholder, feed_dict{placeholder:input})
1 ответ
Ваш заполнитель имеет форму None x 3 x 3
поэтому вам нужно ввести данные, которые имеют 3 измерения, даже если первое измерение имеет размер 1 (т.е. 1 x 3 x 3
в вашем случае вместо 3 x 3
). Один из простых способов добавить дополнительное измерение (размером 1) в массив - это array[None]
, Если array
имеет форму 3 x 3
затем array[None]
имеет форму 1 x 3 x 3
, Таким образом, вы можете обновить свой код
inputs = np.array([[1, 1 ,1], [1, 1, 1], [1, 1, 1]])
placeholder = tf.placeholder(tf.float32,shape=[None, 3, 3])
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
sess.run(placeholder, feed_dict{placeholder: inputs[None]})
(Я изменился input
в inputs
так как input
является ключевым словом в Python и не должно использоваться в качестве имени переменной)
Обратите внимание, что вы не хотите делать inputs[None]
если inputs
уже 3D. Если это может быть 2D или 3D, вам нужно условие, как inputs[None] if inputs.ndim == 2 else inputs
,