2016-02-03 2 views
2

В кормлении batch_xs на x, я изменил размер batch_xs, для BATCH_SIZE равен 1. Вот мой источник. Я не уверен, что делает ValueError.Невозможно сделать массив с использованием тензорного потока

with tf.name_scope("input") as scope: 
    x = tf.placeholder(tf.float32, shape=[1, 784]) 

BATCH_SIZE = 1 
DROP_OUT_RATE = 0.4 
EPOCH = 1 
MEMORIZE = 10 
accuracy_array = [] 
loss = tf.nn.l2_loss(y - x)/BATCH_SIZE 
train_step = tf.train.AdamOptimizer(1e-4).minimize(loss) 

mnist = input_data.read_data_sets('MNIST_data', one_hot=True) 
mnist_list = make_mnist_train_list(55000, 10) 
test_list = make_mnist_test_list(5000, 10) 
sess = tf.Session() 
sess.run(tf.initialize_all_variables()) 

for i in range(EPOCH): 
    for j in range(5500/BATCH_SIZE): 
     batch_xs = tf.reshape(mnist_list[0][j*BATCH_SIZE:j*BATCH_SIZE+1], [1, 784]) 
     sess.run(train_step, feed_dict={x: batch_xs, keep_prob: (1.0 - DROP_OUT_RATE), r_keep_prob: (1.0 - DROP_OUT_RATE)}) 
     if (i +1)% MEMORIZE == 0: 
      accuracy_array.append(loss.eval(session=sess, feed_dict={x: batch_xs, keep_prob: 1.0, r_keep_prob: 1.0})) 
      print(accuracy_array[ int(math.floor((i+1)/MEMORIZE -1))]) 

Это дает мне ошибку Value, которая для меня не имеет смысла.

ValueError: Аргумент должен быть плотным Тензор

+0

В вашем коде упоминается «tf.nn.l2_loss (y - x)/BATCH_SIZE», но нигде не определяется y. Это полный пример? Также, пожалуйста, укажите полный текст ошибки, который, надеюсь, указывает на причину проблемы. – Josh11b

ответ

2

Из документации here:

Each key in feed_dict can be one of the following types:

  • If the key is a Tensor, the value may be a Python scalar, string, list, or numpy ndarray that can be converted to the same dtype as that tensor. Additionally, if the key is a placeholder, the shape of the value will be checked for compatibility with the placeholder.

  • If the key is a SparseTensor, the value should be a SparseTensorValue.

типов, которые можно использовать в качестве «значения» для ключа в feed_dict должен быть Python примитивные типы или numpy массивов. Вы используете результат tf.reshape, который является тензорным тиснением TensorFlow. Вы можете просто использовать np.reshape, если хотите передать преобразованный массив.

Смежные вопросы