TensorFlow之入門基礎知識
阿新 • • 發佈:2018-11-10
一、Session會話控制
定義兩個常量矩陣a,b(tf.constant)
a = tf.constant([[1.0,2.0]],name = 'a')
b = tf.constant([[2.0],
[3.0]],name = 'a')
product = tf.matmul(a,b)
要輸出相加得到的結果,不能直接輸出result,需要先生成一個會話(session),並且通過一個這個會話(session)來計算結果
#寫法一 sess = tf.Session() result = sess.run(product) print(result) sess.close()
#寫法二(不需要加sess.close(),直接放入會話視窗)
with tf.Session() as sess:
result = sess.run(product)
print(result)
結果為 [[8.]]
二、Variable變數
#定義一個變數variable state = tf.Variable(0,name = 'a') #定義一個常量b one = tf.constant(1) #加法 new_value = tf.add(state,one) #將new_value的值賦予state,該動作命名為update update = tf.assign(state,new_value)
非常重要!非常重要!非常重要!
初始化所有變數:init = tf.initialize_all_variables()
還要在sess裡啟用init: sess.run(init)
#初始化變數!!! init = tf.initialize_all_variables() with tf.Session() as sess: #啟用init!!! sess.run(init) for _ in range(3): sess.run(update) #不能 print(state) 不起作用!!一定要把 sess 的指標指向 state 再進行 print 才能得到想要的結果! print(sess.run(update))
結果為 4
三、Placeholder 傳入值
注意:傳入placeholder 與 feed_dict={} (字典)是繫結在一起的,必須同時出現!!!
#placeholder是用來存放變數 ,在 Tensorflow 中需要定義 placeholder 的 type ,一般為 float32 形式
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
out = tf.multiply(input1,input2)
session會話控制
with tf.Session() as sess:
#feed_dict={} (字典)
result = sess.run(out,feed_dict={input1:[7.],input2:[4.]})
print(result)
結果為 [28.]
四、新增層layer
構建簡單的一層神經網路,包括常見引數weights、biases和activation_function
首先定義新增神經層的函式def add_layer(),它有四個引數:輸入值、輸入的大小、輸出的大小和激勵函式
def add_layer(inputs,in_size,out_size,activation_function = None):
#定義weights和biases,weight為隨機變數(variable)
Weights = tf.Variable(tf.random_normal([in_size,out_size]))#矩陣大小為in_size*out_size
biases = tf.Variable(tf.zeros([1,out_size])+0.1)#biases不為0,加上任意一個小數值
#定義Wx_plus_b, 即神經網路未啟用的值
Wx_plus_b = tf.matmul(inputs,Weights) + biases
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
return outputs