我是张力流量的新手,我真的不知道如何解决这个问题。
代码如下:
为火车提供值:
sess.run(train_op, feed_dict={images: e, labels: l, keep_prob_fc2: 0.5})
使用CNN中的值:
x = tf.placeholder(tf.float32, [None, 10 * 1024])
然后出现错误
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder' with dtype float [[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/gpu:0"]()]]
我使用print(e.dtype)
打印输入值类型,结果为float32
和e.shape:(10, 32, 32, 1)
。
我真的不知道为什么会发生这种错误。
代码格式
第一:
define the CNN model
"image = tf.placeholder(tf.float32, [FLAGS.batch_size, 32,32,1])" is here
第二
loss funtion and train_op is here
"label = tf.placeholder(tf.float32, [None, FLAGS.batch_size])" is here
第三是会议:
images, labels = getShuffleimage()#here will get shuffle data
num_examples = 0
init = tf.initialize_local_variables()
with tf.Session() as sess:
# Start populating the filename queue.
sess.run(init)
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord, sess=sess)
try:
step = 0
while not coord.should_stop():
start_time = time.time()
image, label = sess.run([images, labels])#get shuffle images
print(image.shape)
print(image.dtype)
sess.run(train_op, feed_dict={image: image, label: label , keep_prob_fc2: 0.5})
duration = time.time() - start_time
except tf.errors.OutOfRangeError:
print('Done training after reading all data')
finally:
# When done, ask the threads to stop.
coord.request_stop()
# Wait for threads to finish.
coord.join(threads)
sess.close()
答案 0 :(得分:12)
一些问题
第一
为什么你同时使用sess = tf.InteractiveSession()
和with tf.Session() as sess:
,只是好奇
第二
您的占位符名称x
或images
是什么?
如果名称为x
,{images: x_data...}
将无法向x_data
提供x
,则会覆盖(?)images
我认为feed_dict应该是{x: x_data...}
如果名称为images
,您的计划images
和placeholder
中有两个shuffle data
,请尝试修改变量名称
答案 1 :(得分:1)
我看到代码有一个问题。有两个名称相同的变量label
。其中一个是指Tensor,另一个是指一些数据。在label: label
中设置feed_dict
时,需要区分这两个变量。
也许您可以尝试更改其中一个变量的名称?