1. 程式人生 > >關於tensorflow的一點小知識

關於tensorflow的一點小知識

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()

執行結果: