天天看點

動态圖(Eager)和資料集(tf.data)

一 動态圖 動态圖是相對于靜态圖而言的。所謂的動态圖是指在python中代碼被調用後,其操作立即被執行的計算。其與靜态圖最大的差別是不需要使用session來建立會話了。即在靜态圖中,需要在會話中調用run方法才可以獲得某個張量的具體值:而在動态圖中,直接運作就可以得到具體值了。 動态圖TensorFlow 1.3版本之後才出現的。它使TensorFlow的入門變得更簡單,也使研發更直覺。 啟動動态圖隻需要在程式的最開始處加上兩行代碼: import tersorflow.contrib.eager as tfe tfe.enable_eager_execution() 這兩行代碼的作用就是開啟動态圖計算功能。例如,調用tf.matmul時,将會立即計算兩個數相乘的值,而不是一個op Eager還處于一個試用階段,也是TensorFlow大力推廣的新特效,未來或許會成為趨勢。 在建立動态圖的過程中,預設也建立一個session。所有的代碼都在該session中進行,而且該session具有程序相同的生命周期。這表明一旦使用動态圖就無法實作靜态圖中關閉session的功能。這是動态圖的不足之處:無法實作多session操作。如果目前代碼隻需要一個session來完成的話,建議優先選擇動态圖Eager來實作。

二 資料集 TensorFlow中有3中資料輸入模式:

  • 直接使用feed_dict利用注入模式進行資料輸入,适用于少量的資料集輸入;
  • 使用隊列式管道,适用于大量的資料集輸入;
  • 性能更高的輸入管道,使用與TensorFlow 1.4之後的版本,是為動态圖功能提供大資料輸入方案(動态圖資料集輸入隻能使用該方法),當然也支援靜态圖。

繼續閱讀