Ich habe versucht, den Datenlesemechanismus aus der Datei in TensorFlow als eine Reihe von Flows zu zerlegen. Ich denke, dass es eine Referenz dafür sein wird, wie man die binären Bilddaten von CIFAR-10 aufnimmt, die Warteschlange verwendet und sie als Tensor in der Sitzung an das Diagramm sendet.
ich fand heraus ・ Wie in der offiziellen Daten lesen angegeben, erfolgt das Lesen aus einer Datei in 7 Schritten.
tf.Graph().as_default()
sess=tf.Session()
tf.train.start_queue_runners(sess=sess)
for i in range():
sess.run([ .. ])
```
Etc.
In [Versuchen Sie, die Reader-Klasse von TensorFlow zu verwenden](http://qiita.com/knok/items/2dd15189cbca5f9890c5) wird außerdem der wichtigste Teil des Umgangs mit JPEG-Bildern erläutert. Siehe.
Es wird angenommen, dass die Daten von cifar10 als / tmp / cifar10_data / .. gespeichert werden. Wenn Sie den folgenden Code ausführen, werden die Bilddaten als Tensor ausgegeben.
Dieses Skript extrahiert die grundlegenden Teile des Ladens und der Vorverarbeitung von Daten aus der Vielzahl von Funktionen im cifar10-Lernprogramm. Weitere Informationen finden Sie unter cifar10_input.py.
#### **`tensorflow_experiment3.py`**
```py
#coding:utf-8
#Bis die Cifar10-Bilddatei gelesen und in einen Tensor konvertiert wurde.
import tensorflow as tf
FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_integer('max_steps', 1,
"""Number of batches to run.""")
tf.app.flags.DEFINE_integer('batch_size', 128,
"""Number of images to process in a batch.""")
NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN = 50000
with tf.Graph().as_default():
# 1.Liste der Dateinamen
filenames = ['/tmp/cifar10_data/cifar-10-batches-bin/data_batch_1.bin',
'/tmp/cifar10_data/cifar-10-batches-bin/data_batch_2.bin',
'/tmp/cifar10_data/cifar-10-batches-bin/data_batch_3.bin',
'/tmp/cifar10_data/cifar-10-batches-bin/data_batch_4.bin',
'/tmp/cifar10_data/cifar-10-batches-bin/data_batch_5.bin']
# 2.Kein Dateinamen mischen
# 3.Keine Epochenbegrenzung
# 4.Erstellen einer Warteschlange für die "Dateinamenliste"
filename_queue = tf.train.string_input_producer(filenames)
# 5.Erstellen eines Lesegeräts, das dem Datenformat entspricht
class CIFAR10Record(object):
pass
result = CIFAR10Record()
label_bytes = 1
result.height = 32
result.width = 32
result.depth = 3
image_bytes = result.height * result.width * result.depth
record_bytes = label_bytes + image_bytes
reader = tf.FixedLengthRecordReader(record_bytes=record_bytes)
##Öffnen Sie die Datei, indem Sie die Warteschlange an den Reader übergeben
result.key, value = reader.read(filename_queue)
# 6.Daten aus Leseergebnissen dekodieren
record_bytes = tf.decode_raw(value, tf.uint8)
# 7.Datenformung
# 7-1.Grundformung
result.label = tf.cast(tf.slice(record_bytes, [0], [label_bytes]), tf.int32)
depth_major = tf.reshape(tf.slice(record_bytes, [label_bytes], [image_bytes]),
[result.depth, result.height, result.width])
result.uint8image = tf.transpose(depth_major, [1, 2, 0])
read_input = result
reshaped_image = tf.cast(read_input.uint8image, tf.float32)
float_image = reshaped_image
# 7-2.Vorbereiten des Mischens von Daten
min_fraction_of_examples_in_queue = 0.4
min_queue_examples = int(NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN *
min_fraction_of_examples_in_queue)
print ('Filling queue with %d CIFAR images before starting to train. '
'This will take a few minutes.' % min_queue_examples)
# 7-3.Stapel erstellen(Mit mischen)
batch_size = FLAGS.batch_size
num_preprocess_threads = 16
images, label_batch = tf.train.shuffle_batch(
[float_image, read_input.label],
batch_size=batch_size,
num_threads=num_preprocess_threads,
capacity=min_queue_examples + 3 * batch_size,
min_after_dequeue=min_queue_examples)
images=images
labels = tf.reshape(label_batch, [batch_size])
# 8.Lauf
sess = tf.Session()
tf.train.start_queue_runners(sess=sess)
for step in xrange(FLAGS.max_steps):
img_label = sess.run([images, labels])
print(img_label)
print("FIN.")
```
Recommended Posts