關於tensorflow的一點小知識
阿新 • • 發佈:2018-12-23
tensorflow執行模式——會話
第一種方法:
#建立一個會話
sess=tf.Session()
#使用這個建立的會話來得到關心的運算結果
sess.run(...)
#關閉會話,使得本次執行中使用到的資源可以被釋放
sess.close()
使用這種方法的時候需要明確呼叫Session.close函式來關閉會話並釋放資源。
第二種方法:
#建立一個會話,並通過python中的上下文管理器來管理這個會話
with tf.Session() as sess:
#使用建立好的會話來關心計算結果
sess.run()
第二種方法不需要呼叫close函式來關閉會話
第三種方法:
sess=tf.InteractiveSession()
print(result.eval())
sess.close()
tensorflow變數
宣告一個2*3矩陣變數的方法
weights=tf.Variable(tf.random_normal([2,3],stddev=2))
樣例中會產生一個2*3矩陣,矩陣中的元素的均值是0,標準差為2的隨機數。如果在random_normal函式裡再加入seed=1引數,即可保證每次執行的結果是一樣的。下面是幾個常見的隨機數生成函式
random_normal: 正太分佈隨機數,均值mean,標準差stddev
truncated_normal:截斷正態分佈隨機數,均值mean,標準差stddev,不過只保留[mean-2*stddev,mean+2*stddev]範圍內的隨機數
random_uniform:均勻分佈隨機數,範圍為[minval,maxval]
常熟生成函式:
#產生全0的特徵
tf.zeros([2,3],int32)
#產生全1的特徵
tf.ones([2,3],int32)
#產生一個全部為給定數字的陣列
tf.fill([2,3],9)
#產生一個給定值的陣列
tf.constant([1,2,3])
#tf中的矩陣乘法
tf.matmul(x,w1)
神經網路的前向傳播實現:
import tensorflow as tf #宣告兩個變數 w1=tf.Variable(tf.random_normal((2,3),stddev=1,seed=1)) w2=tf.Variable(tf.random_normal((3,1),stddev=1,seed=1)) #暫時將輸入的特徵量定義為一個常量 x=tf.constant([[0.7,0.9]]) #前向傳播演算法 a=tf.matmul(x,w1) y=tf.matmul(a,w2) sess=tf.Session() init_op=tf.global_variables_initializer() sess.run(init_op) #input print(sess.run(y)) sess.close()
執行結果: