Je suis un nouveau venu dans tensorflow, je ne sais vraiment pas comment résoudre le problème.
Le code est comme:
Nourrissez le train avec des valeurs:
sess.run(train_op, feed_dict={images: e, labels: l, keep_prob_fc2: 0.5})
Utilisez la valeur en CNN:
x = tf.placeholder(tf.float32, [None, 10 * 1024])
Alors avoir l'erreur
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"]()]]
J'imprime les types de valeur en entrée à l'aide de print(e.dtype)
et le résultat est float32
Et e.shape:(10, 32, 32, 1)
.
Je ne sais vraiment pas pourquoi cette erreur se produit.
Le format du code
Première:
define the CNN model
"image = tf.placeholder(tf.float32, [FLAGS.batch_size, 32,32,1])" is here
Seconde:
loss funtion and train_op is here
"label = tf.placeholder(tf.float32, [None, FLAGS.batch_size])" is here
Troisième est la session:
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()
Quelques questions
première
pourquoi vous utilisez sess = tf.InteractiveSession()
et with tf.Session() as sess:
en même temps, simplement curieux
deuxièmement, quel est votre nom de marque de réservation x
ou images
?
si le nom est x
, {images: x_data...}
ne nourrit pas x_data
à x
, il écrase (?) images
Je pense que feed_dict devrait être {x: x_data...}
si name est images
, avez-vous deux images
dans votre programme, placeholder
et shuffle data
, essayez de modifier le nom de la variable
J'ai vu un problème avec le code. Il existe deux variables portant le même nom label
. L'un d'eux fait référence à un tenseur et l'autre à des données. Lorsque vous définissez label: label
dans le feed_dict
, vous devez faire la distinction entre les deux variables. Peut-être que vous pouvez essayer de changer le nom d'une des variables?