Ich benutze TFrecord
als Eingabe.
Und jetzt brauche ich dreifache Batch-Eingabe. Die image_batch
und label_batch
ist in Ordnung. Aber zweite posimage_batch
, poslabel_batch
ist ein Fehler. Ich habe viele Beiträge über RandomShuffleQueue
Fehler Frage gelesen.
Die Antwort tf.local_variables_initializer()
löst nicht meinen Fehler
Weil ich suche nur eine batch_data
und batch_label
als Eingabe. Also habe ich keine Ahnung von dreifachem Input.
Ich suche lange im Netz. Aber keine Verwendung. Bitte helfen oder versuchen Sie, einige Ideen zu geben, wie dies zu erreichen ist.OutOfRangeError (siehe oben für Traceback): RandomShuffleQueue '_5_shuffle_batch_1/random_shuffle_queue' ist geschlossen und hat keine ausreichenden Elemente
def real_read_and_decode(filename):
filename_queue = tf.train.string_input_producer([filename])
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filename_queue)
features = tf.parse_single_example(serialized_example,
features={
'label': tf.FixedLenFeature([], tf.int64),
'img_raw' : tf.FixedLenFeature([], tf.string),
})
img = tf.decode_raw(features['img_raw'], tf.uint8)
img = tf.reshape(img, [WIDTH,HEIGHT, 3])
label = tf.cast(features['label'], tf.int32)
labels = tf.one_hot(label, NUM_CLASSES)
return img, labels
def main():
image, label = read_and_decode("sketch_train.tfrecords")
posimage, poslabel = real_read_and_decode("pos_train.tfrecords")
negimage, neglabel = real_read_and_decode("neg_train.tfrecords")
image_batch, label_batch =tf.train.shuffle_batch([image, label],batch_size=BATCH_SIZE,capacity=1500, min_after_dequeue=1000)
posimage_batch, poslabel_batch = tf.train.shuffle_batch([posimage, poslabel],batch_size=BATCH_SIZE,capacity=1500, min_after_dequeue=1000)
negimage_batch, neglabel_batch = tf.train.shuffle_batch([negimage, neglabel],batch_size=BATCH_SIZE,capacity=1500, min_after_dequeue=1000)
with tf.Session(config=config) as sess:
sess.run(tf.local_variables_initializer())
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess,coord=coord)
for i in range(ITERATION):
if coord.should_stop():
print('corrd break!!!!!!')
break
#sess.run(tf.local_variables_initializer())
example_train, l_train = sess.run([image_batch, label_batch])
example_train2, l_train2= sess.run([posimage_batch, poslabel_batch])
example_train3, l_train3 = sess.run([negimage_batch, neglabel_batch])
_, loss_v = sess.run([train_step, loss],feed_dict={x1: example_train,y1: l_train,x2: example_train2, y2: l_train2,x3: example_train3, y3: l_train3})
Weil ich ein neuer Benutzer bin, und mein Englisch ist nicht gut.
Ich hoffe, es macht Ihnen nichts aus.