Tensor,placeholder與Variable區別

import tensorflow as tf

a = tf.Variable(1.0,name='a')
b = tf.Variable(2.0,name='b')
c = tf.add(a,b)

sess = tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(c))
sess.close()

a,b是Variable,而c是Tensor。

注: 在TensorFlow中,變量的定義和初始化是分開的,所有關於圖變量的賦值和計算都要通過tf.Session的run來進行。想要將所有圖變量進行集體初始化時應該使用tf.global_variables_initializer。

Variable和Tensor之間的區別:
1. Variable是可更改的,而Tensor是不可更改的。
2. Variable用於存儲網絡中的權重矩陣等變量,而Tensor更多的是中間結果等。
3. Variable是會顯示分配內存空間的,需要初始化操作(assign一個tensor),由Session管理,可以進行存儲、讀取、更改等操作。相反地,諸如Const, Zeros等操作創造的Tensor,是記錄在Graph中,所以沒有單獨的內存空間;而其他未知的由其他Tensor操作得來的Tensor則是隻會在程序運行中間出現。
4. Tensor可以使用的地方,幾乎都可以使用Variable。

.tf.Variable與tf.placeholder區別:

tf.Variable適合一些需要初始化或被訓練而變化的權重或參數,而tf.placeholder適合通常不會改變的被訓練的數據集。

例如:

# 輸入的樣本
X = tf.placeholder(tf.float32, [784])
y = tf.placeholder(tf.float32, [10])

# 權重參數
W = tf.Variable(tf.float32, [784, 10])
b = tf.Variable(tf.float32, [10]) 


參考文獻:https://blog.csdn.net/u013841196/article/details/82960765

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章