Tensorflow – ValueError: невозможно передать значение формы

У меня есть 19 входных целочисленных функций. Вывод и метки равны 1 или 0. Я изучаю пример MNIST из сайт тензорного потока.

Мой код здесь:

validation_images, validation_labels, train_images, train_labels = ld.read_data_set()
print "\n"
print len(train_images[0])
print len(train_labels)

import tensorflow as tf
sess = tf.InteractiveSession()

x = tf.placeholder(tf.float32, shape=[None, 19])
y_ = tf.placeholder(tf.float32, shape=[None, 2])

W = tf.Variable(tf.zeros([19,2]))
b = tf.Variable(tf.zeros([2]))

sess.run(tf.initialize_all_variables())
y = tf.nn.softmax(tf.matmul(x,W) + b)
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

start = 0
batch_1 = 50
end = 100

for i in range(1000):
  #batch = mnist.train.next_batch(50)
  x1 = train_images[start:end]
  y1 = train_labels[start:end]
  start = start + batch_1
  end = end + batch_1   
  x1 = np.reshape(x1, (-1, 19))
  y1 = np.reshape(y1, (-1, 2))
  train_step.run(feed_dict={x: x1[0], y_: y1[0]})

Я запускаю верхний код, я получаю сообщение об ошибке. Компилятор говорит, что

% (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape (19,) for Tensor u'Placeholder:0', which has shape '(?, 19)'

Как я могу справиться с этой ошибкой?


person Community    schedule 01.05.2016    source источник
comment
Какой набор данных вы используете?! МНИСТ?! Можете ли вы распечатать и проверить форму x1 и y1?   -  person shekkizh    schedule 02.05.2016


Ответы (2)


Пытаться

train_step.run(feed_dict={x: x1, y_: y1})
person Yaroslav Bulatov    schedule 01.05.2016
comment
После выполнения некоторых шагов возникает ошибка. ValueError: total size of new array must be unchanged - person ; 02.05.2016
comment
похоже, у вас есть проблема с изменением формы numpy где-то - person Yaroslav Bulatov; 02.05.2016
comment
Я удаляю линии изменения формы, train_step.run(feed_dict={x: x1, y_: y1}) выдает ошибку. - person ; 02.05.2016
comment
Я предполагаю, что без изменения формы ваш тензор теперь имеет неправильную форму (не соответствует форме заполнителя) - person Yaroslav Bulatov; 02.05.2016

Вы можете изменить значение фида с помощью следующего кода:

x1 = np.column_stack((x1))
x1 = np.transpose(x1)   # if necessary

Таким образом, форма входного значения будет (1, 19) вместо (19,)

person Inna    schedule 19.03.2019