TF官網學習(9)--使用iterator注意事項

TF官網學習(9)--使用iterator注意事項

來自專欄 TensorFlow日常1 人贊了文章

1. 調用Iterator.get_next()不會立即更新iterator

dataset = tf.data.Dataset.range(5)iterator = dataset.make_initializable_iterator()next_element = iterator.get_next()# Typically `result` will be the output of a model, or an optimizers# training operation.result = tf.add(next_element, next_element)sess.run(iterator.initializer)print(sess.run(result)) # ==> "0"print(sess.run(result)) # ==> "2"print(sess.run(result)) # ==> "4"print(sess.run(result)) # ==> "6"print(sess.run(result)) # ==> "8"try: sess.run(result)except tf.errors.OutOfRangeError: print("End of dataset") # ==> "End of dataset"

2. 如果數據集的每個元素都有嵌套結構,則Iterator.get_next()的返回值將是同一個嵌套結構中的一個或多個tf.Tensor對象

dataset1 = tf.data.Dataset.from_tensor_slices(tf.random_uniform([4, 10]))dataset2 = tf.data.Dataset.from_tensor_slices((tf.random_uniform([4]), tf.random_uniform([4, 100])))dataset3 = tf.data.Dataset.zip((dataset1, dataset2))iterator = dataset3.make_initializable_iterator()sess.run(iterator.initializer)next1, (next2, next3) = iterator.get_next()

注意:next1,next2,next3由相同的op/node產生,因此,評估任何這些張量將推進所有組件的迭代器。


推薦閱讀:

技術 | 「深度學習」八大開源框架之TensorFlow
AI Smart-V1.0.0
【博客存檔】風格畫之最後一彈MRF-CNN
手把手教你在windows7上安裝tensorflow-gpu開發環境

TAG:TensorFlow | 深度學習DeepLearning | Python |