tensorflow 學習筆記之 變數的一些操作

2021-08-10 03:04:37 字數 3215 閱讀 9247

部分內容參考了其他資源,謝謝。

使用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,...