1. ホーム
  2. python

[解決済み】プレースホルダーテンソル「Placeholder」にdtypeがfloatの値を与える必要がある。

2022-02-20 04:38:47

質問

私は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])
    
    

そして、次のようなエラーが発生します。

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

2番目

 loss funtion and train_op is here
       "label = tf.placeholder(tf.float32, [None, FLAGS.batch_size])" is here

3つ目はセッションです。

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()

解決方法は?

いくつかの質問

第一
を使用する理由 sess = tf.InteractiveSession()with tf.Session() as sess: を同時に使用することができます。

セカンド プレースホルダー名は何ですか? x または images ?
名前が x , {images: x_data...} 餌を与えない x_datax をオーバーライドします。 images
フィードディクトは {x: x_data...}

名前が images を2つ持っていますか? images をプログラムに入れてください。 placeholdershuffle data で、変数名を変更しようとすると