Environnement d'exploitation
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.
Apprendre un framework Deep Learning appelé TensorFlow.
https://indico.io/blog/tensorflow-data-inputs-part1-placeholders-protobufs-queues/ Je suis tombé sur une description que je n'ai jamais vue dans le premier code de.
...
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
Ce que je n'ai pas compris au premier coup d'œil ci-dessus était "Où est défini next () dans iter_.next ()?"
Il n'y a pas de définition de next () dans la classe iter_ data_iterator ().
D'autre part, il y a une description du rendement. J'ai le sentiment que cela s'est produit lorsque j'ai créé le logiciel avec Unity. http://qiita.com/7of9/items/194e1c7f4b87a79dd129
Un article Qiita a été trouvé en recherchant avec next () et yield. http://qiita.com/tomotaka_ito/items/35f3eb108f587022fa09#yieldを使ったジェネレータの実装
Après tout, il semble qu'il puisse être utilisé de la même manière que le rendement utilisé dans Unity.