在tensorflow1中,程序一般可以分為兩個階段徒欣,第一個階段定義計算圖中的所有階段逐样,并沒有真正進行計算;第二個階段賦予數據執(zhí)行計算打肝。
例如:
1官研、定義計算:
y=3a+2
2、給a賦值a=5闯睹,執(zhí)行計算戏羽,得到y(tǒng)=17
系統(tǒng)一般會維護一個默認的計算圖,若想查看a所屬的計算圖楼吃,可以用a.graph
TensorFlow支持通過tf.Graph函數來生成新的計算圖始花,不同計算圖上的張量和運算都不會共享。
#指定計算運行的設備
tf.device("/gpu:0"):
TensorFlow中的會話(Session)
會話擁有并管理TensorFlow程序運行時的所有資源孩锡。
#通過python中的上下文管理器酷宵,可以解決異常退出時資源釋放的問題
with tf.Session() as sess:
......
變量的作用就是保存和更新神經網絡中的參數,如下聲明一個23矩陣的變量
weights = tf.Variable(tf.random_normal([2.3]), stddev = 2)) #stddev=2:均值為0躬窜,標準差為2
所有的變量都會被自動的加到GraphKeys.VARIABLES這個集合中浇垦,可以通過tf.global_variables()函數拿到。
一般來說荣挨,一個神經網絡的訓練會經過幾百萬輪甚至幾億輪的迭代男韧,這樣計算圖就會非常大,因此TensorFlow提供了placeholder機制用于提供輸入數據默垄。以上的寫法就改為:
a = tf.placeholder(tf.float32, shape=(1,2),name="input")
sess = tf.Session()
init_op = tf.global_variables_initializer()
sess.run(init_op)
sess.run(y,feed_dict = {x:3})