Betriebsumgebung
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 14.04 LTS desktop amd64
TensorFlow v0.11
cuDNN v5.1 for Linux
CUDA v8.0
Python 2.7.6
IPython 5.1.0 -- An enhanced Interactive Python.
Lernen eines Deep Learning-Frameworks namens TensorFlow.
https://indico.io/blog/tensorflow-data-inputs-part1-placeholders-protobufs-queues/ Ich bin auf eine Beschreibung gestoßen, die ich im ersten Code von noch nie gesehen habe.
...
def data_iterator():
""" A simple data iterator """
batch_idx = 0
while True:
# shuffle labels and features
idxs = np.arange(0, len(features))
np.random.shuffle(idxs)
shuf_features = features[idxs]
shuf_labels = labels[idxs]
batch_size = 128
for batch_idx in range(0, len(features), batch_size):
images_batch = shuf_features[batch_idx:batch_idx+batch_size] / 255.
images_batch = images_batch.astype("float32")
labels_batch = shuf_labels[batch_idx:batch_idx+batch_size]
yield images_batch, labels_batch
iter_ = data_iterator()
while True:
# get a batch of data
images_batch_val, labels_batch_val = iter_.next()
# pass it in as through feed_dict
_, loss_val = sess.run([train_op, loss_mean], feed_dict={
images_batch:images_batch_val,
labels_batch:labels_batch_val
})
print loss_val
Was ich oben auf den ersten Blick nicht verstanden habe, war "Wo ist next () in iter_.next () definiert?"
Es gibt keine Definition von next () in der Klasse data_iterator () von iter_.
Auf der anderen Seite gibt es eine Beschreibung der Ausbeute. Ich habe das Gefühl, dass dies herauskam, als ich die Software mit Unity erstellte. http://qiita.com/7of9/items/194e1c7f4b87a79dd129
Ein Qiita-Artikel wurde durch Suchen mit next () und Ausbeute gefunden. http://qiita.com/tomotaka_ito/items/35f3eb108f587022fa09#yieldを使ったジェネレータの実装
Immerhin scheint es, dass es auf die gleiche Weise verwendet werden kann wie die in Unity verwendete Ausbeute.
Recommended Posts