1. 程式人生 > >TensorFlow之入門基礎知識

TensorFlow之入門基礎知識

一、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