Размер заполнителя 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,

Другие вопросы по тегам