您必须使用dtype float为占位符张量'Placeholder'提供值

时间:2017-01-12 07:13:06

标签: python tensorflow

我是张力流量的新手,我真的不知道如何解决这个问题。

代码如下:

  1. 为火车提供值:

    sess.run(train_op, feed_dict={images: e, labels: l, keep_prob_fc2: 0.5})
    
  2. 使用CNN中的值:

    x = tf.placeholder(tf.float32, [None, 10 * 1024])
    
  3. 然后出现错误

    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)打印输入值类型,结果为float32e.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()
    

2 个答案:

答案 0 :(得分:12)

一些问题

第一
为什么你同时使用sess = tf.InteractiveSession()with tf.Session() as sess:,只是好奇

第二 您的占位符名称ximages是什么? 如果名称为x{images: x_data...}将无法向x_data提供x,则会覆盖(?)images
我认为feed_dict应该是{x: x_data...}

如果名称为images,您的计划imagesplaceholder中有两个shuffle data,请尝试修改变量名称

答案 1 :(得分:1)

我看到代码有一个问题。有两个名称相同的变量label。其中一个是指Tensor,另一个是指一些数据。在label: label中设置feed_dict时,需要区分这两个变量。 也许您可以尝试更改其中一个变量的名称?