tensorflow之tf.placeholder 與 tf.Variable區別對比
阿新 • • 發佈:2019-01-03
二者的主要區別在於
Variable:主要是用於訓練變數(trainable variables)之類的。比如我們經常使用的網路權重,偏置。
值得注意的是Variable在宣告是必須賦予初始值。在訓練過程中該值很可能會進行不斷的加減操作變化。
名稱的真實含義,在於變數,也即在真實訓練時,其值是會改變的,自然事先需要指定初始值;
weights = tf.Variable( tf.truncated_normal([IMAGE_PIXELS, hidden1_units], stddev=1./math.sqrt(float(IMAGE_PIXELS)), name='weights') ) biases = tf.Variable(tf.zeros([hidden1_units]), name='biases')
- 宣告時,若設定引數trainable=False,那麼引數不會被改變,預設trainable=True;
placeholder: 用於得到傳遞進來的真實的訓練樣本
此函式可以理解為形參,用於定義過程,在執行的時候再賦具體的值
- 不必指定初始值,可在執行時,通過 Session.run 的函式的 feed_dict 引數指定;
- 也是用於儲存資料,但是主要用於feed_dict的配合,接收輸入資料用於訓練模型等。placeholder值在訓練過程中會不斷地被賦予新的值,用於批訓練,基本上其值是不會輕易進行加減操作。
placeholder在命名時是不會需要賦予值得,其被賦予值得時間實在feed_dict時。其命名的原因所在,僅僅作為一種佔位符;
tf.placeholder(dtype, shape=None, name=None)
此函式可以理解為形參,用於定義過程,在執行的時候再賦具體的值
引數:
dtype:資料型別。常用的是tf.float32,tf.float64等數值型別
shape:資料形狀。預設是None,就是一維值,也可以是多維,比如[2,3], [None, 3]表示列是3,行不定
name:名稱。
images_placeholder = tf.placeholder(tf.float32, shape=[batch_size, IMAGE_PIXELS]) labels_placeholder = tf.placeholder(tf.int32, shape=[batch_size])