Tensorflow lesson 6---層 layer

設計一個深度學習的模型,其實就設計一個多層的學習模型,而每個層上又有不同的神經元,所有的運算邏輯都是在這些神經元上完成的,每一層的輸出作爲下一層的輸入。
下圖是一個典型的,一共有5層的學習模型,包含1個輸入層,3個隱藏層,1個輸出層,而在每個隱藏層中有包括2個神經元。
這裏寫圖片描述

輸入層:輸入一定是所謂的圖Tensor結構,可以是輸入tensor的各種可能feature運算,比如說是平方,相乘,sin,cos等等,具體是什麼要根據實際情況來定

隱藏層:這是執行學習運算邏輯的主要陣地,所謂的深度學習,也就是隱藏層可以是非常深的層次,層次越多所要消耗的資源也越多,但並不見得層次越多效果會越好。每一個隱藏層可以設計自己的學習邏輯,使得神經元對不同的特性感興趣,這部分也是我們需要主要學習的地方

輸出層:是模型的最後一個層次,直接把學習的結果輸出爲可以被理解的格式,比如說圖片識別,這一層可以告訴你圖片中物體可能是什麼物體的概率。

這裏寫圖片描述
上面這張圖是一個有4個隱藏層,每個層有不同數量的神經元,而輸入層有四個不同feature數據輸入。
讀者可以到谷歌推出的神經網絡遊樂場去完,有助於理解層的概念
http://playground.tensorflow.org

示例代碼:

import tensorflow as tf
import numpy as np

def add_layer(inputs,in_size,out_size,activation_function=None):
    Weights = tf.Variable(tf.random_normal([in_size,out_size]))
    biases = tf.Variable(tf.zeros([1,out_size])+0.1)
    Wx_plus_b=tf.matmul(inputs,Weights)
    if(activation_function==None):
        outputs=Wx_plus_b
    else:
        outputs=activation_function(Wx_plus_b)

    return outputs

x_data= np.linspace(-1,1,300)[:,np.newaxis]
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)-0.5+noise

xs=tf.placeholder(tf.float32,[300,1],"xs")
ys=tf.placeholder(tf.float32,[300,1],"ys")


l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
prediction= add_layer(l1,10,1,activation_function=None)


loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))

train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)

init=tf.initialize_all_variables()
sess=tf.Session()
sess.run(init)

for i in range(1000):
    sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
    if i%20 ==0:
        print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))

執行結果如下:

0.634071
0.133638
0.121423
0.119904
0.119701
0.119674
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
0.11967
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章