部分內容參考了其他資源,謝謝。
使用tf.variable()時,如果系統檢測到重名,會做自動處理,不會報錯。
w_1 = tf.variable(3,name="w")
w_2 = tf.variable(1,name="w")
print(w_1.name)
print(w_2.name)
執行結果:
使用tf.get-variable()時,會報錯。
若需要給tensorflow的變數賦值,可以使用 tf.assign()
tf.assign(ref, value, validate_shape=none, use_locking=none, name=none)
將值賦值給ref後再返回ref
import tensorflow as tf;
a = tf.variable(tf.constant(0.0), dtype=tf.float32)
with tf.session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(a))
sess.run(tf.assign(a, 10))
print(sess.run(a))
執行結果如下:
執行session會話後,a的值一開始為0.0,隨後執行assign操作,變成10。
上面的**中sess.run(bias) 與 bias.eval() 是一樣的。
如果直接用 print(weights) ,則列印的結果是 weight 的 shape ,
只是乙個佔位符,佔位符並沒有初始值,只是在必要時分配記憶體,
在tensorflow中,資料並不會儲存為 integer, float, 或 string. 這些值都封裝在 tensor 物件中,因此不能直接定義並使用乙個變數例如x,因為你設計的模型可能需要受不同的資料集與不同的引數。所以tf使用placeholder()來傳遞乙個tensor到session.run()中,並與feed_dict{}結合一起使用。
feed_dict{}是乙個字典,在字典中需要給每乙個用到的佔位符取值。在訓練神經網路時,需要大批量的訓練樣,如果每一次迭代選取的資料都需要常量表示,那麼tensorflow的計算圖會非常大。因為每計算乙個常量 ,tensorflow會增加乙個結點,所以說,擁有幾百萬次迭代的神經網路會擁有龐大的計算圖,如果使用佔位符的話,就可以很好的解決這一點,它只會擁有佔位符這乙個結點。
#因為需要重複輸入x,而每建乙個x就會生成乙個結點,計算圖的效率會低。所以使用佔位符
x=tf.placeholder(tf.float32,shape=(1,2))
x1=tf.constant([[0.7,0.9]])
a=x+w1
b=x1+w1
sess=tf.session()
sess.run(tf.global_variables_initializer())
#執行y時將佔位符填上,feed_dict為字典,變數名不可變
tensorflow學習筆記
tensorflow安裝可以直接通過命令列或者原始碼安裝,在此介紹tensorflow8命令列安裝如下 安裝tensorflow sudo pip install upgrade 另外,解除安裝tensorflow命令為 sudo pip uninstall tensorflow tensorflo...
Tensorflow學習筆記
1.如何在虛擬機器中安裝tensor flow 1 首先安裝pip pip install 2 pip install 2.學習tensorflow需要學習 python and linux 3.使用 tensorflow,你必須明白 tensorflow 1 使用圖 graph 來表示計算任務.2...
TensorFlow學習筆記
1 擬合直線 import the library import tensorflow as tf import numpy as np prepare train data train x np.linspace 1,1,100 temp1 train x,temp2 train x.shape,...