tf.placeholder()函數
Tensorflow中的palceholder,中文翻譯為占位符,什么意思呢?
在Tensoflow2.0以前,還是靜態圖的設計思想,整個設計理念是計算流圖,在編寫程序時,首先構築整個系統的graph,代碼並不會直接生效,這一點和python的其他數值計算庫(如Numpy等)不同,graph為靜態的,在實際的運行時,啟動一個session,程序才會真正的運行。這樣做的好處就是:避免反復地切換底層程序實際運行的上下文,tensorflow幫你優化整個系統的代碼。我們知道,很多python程序的底層為C語言或者其他語言,執行一行腳本,就要切換一次,是有成本的,tensorflow通過計算流圖的方式,可以幫你優化整個session需要執行的代碼。
在代碼層面,每一個tensor值在graph上都是一個op,當我們將train數據分成一個個minibatch然后傳入網絡進行訓練時,每一個minibatch都將是一個op,這樣的話,一副graph上的op未免太多,也會產生巨大的開銷;於是就有了tf.placeholder(),我們每次可以將 一個minibatch傳入到x = tf.placeholder(tf.float32,[None,32])上,下一次傳入的x都替換掉上一次傳入的x,這樣就對於所有傳入的minibatch x就只會產生一個op,不會產生其他多余的op,進而減少了graph的開銷。
函數形式:
1 tf.placeholder( 2 dtype, 3 shape=None, 4 name=None 5 )
函數參數:
- dtype:數據類型。常用的是tf.float32,tf.float64等數值類型
- shape:數據形狀。默認是None,就是一維值,也可以是多維(比如[2,3], [None, 3]表示列是3,行不定)
- name:名稱
返回:
Tensor類型。