lesson3 : 使用Tensorflow構建簡單神經網絡

經過對神經網絡的理解,以分類網絡為例囊拜,我認為其就是構建了一個高維非線性的函數(shù)映射,其基礎還是線性映射比搭,通過激活函數(shù)等操作將整體映射轉化為非線性冠跷。而訓練過程就是一個擬合的過程。個人在寫這個教程是建立在對神經網絡有了一定基礎認知之后寫的身诺,但是目的是Tensorflow的使用蜜托,所以不再贅述神經網絡的細節(jié)。

3.1 Tensorflow訓練線性運算

首先從簡單的入手霉赡,使用Tensorflow構建一個線性映射進行訓練橄务,可以理解為一個深度神經網絡沒有激活函數(shù)的神經元。

3.1.1 構建訓練數(shù)據

首先我們需要構造訓練數(shù)據穴亏,這個需要使用Numpy(教程)的隨機數(shù)方法蜂挪,Numpy在神經網絡中多有運用,最好掌握一下嗓化,構建原始數(shù)據代碼如下:

import tensorflow as tf
import numpy as np

x_data = np.random.rand(100).astype(np.float32)
y_data = 0.5 * x_data + 0.1 

3.1.2 構建計算圖

構建原始數(shù)據之后棠涮,我們需要設計計算圖,也就是設計張量的流向刺覆,因為我們設計的是線性運算严肪,需要設置Weights和bias,設計代碼如下:

# 設計計算圖
Weights = tf.Variable(tf.random_uniform([1],-1,1))
bias = tf.Variable(tf.zeros([1]))
 # 這個y是我們訓練出來的y,y_data是groundtruth诬垂,我們要根據x_data訓練去擬合y_data
y = Weights * x_data + bias

3.1.3 定義loss和選擇優(yōu)化器

在神經網絡中我們知道,需要根據需要選擇不同的loss伦仍,比如交叉熵结窘,二范式距離等,這個以后運用多了有了一定理解會專門寫一個章節(jié)介紹loss和優(yōu)化器充蓝。對于本例隧枫,我先使用簡單的二范式距離,將y和y_data做loss谓苟,選擇優(yōu)化器為梯度下降法官脓,代碼如下:

loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)

對于本例來說,訓練我們想達到的迭代的目的就是y和y_data構建的二范式loss在梯度下降法的作用下盡可能小涝焙,loss和優(yōu)化器之前定義過卑笨,我們需要告訴tensorflow我們進行網絡訓練的期望是什么,是最小化loss仑撞,如下所示:

train = optimizer.minimize(loss)

3.1.4 迭代訓練

首先迭代進行計算之前的問題是參數(shù)的初始化赤兴,比如Weights和bias,雖然他們定義了tf.Variable()但是并沒有進行實際的計算隧哮,參考lesson2的解釋桶良。我們可以定義會話去挨個調用sess.run(name.initializer)讓他們進行初始化的實際操作。但是會很麻煩沮翔,所以我們定義如下的全局初始化器陨帆,這樣之后我們sess.run(init)就可以實現(xiàn)全局的初始化。

init = tf.global_variables_initializer()

定義會話并進行迭代輸出采蚀,每迭代20次輸出一次結果:

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

for step in range(10000):
    sess.run(train)
    if step % 20 == 0:
        print(step,sess.run(Weights),sess.run(bias))
sess.close()

3.1.5 準確率評測

一般來說這一部分會存在用于評估準確率和模型效果疲牵,因為我們只寫了簡單的線性擬合訓練就不在寫這一部分,主要我現(xiàn)在不怎么會

3.1.6 完整代碼和訓練結果

完整代碼:

import tensorflow as tf
import numpy as np

x_data = np.random.rand(100).astype(np.float32)
y_data = 0.5 * x_data + 0.1

Weights  = tf.Variable(tf.random_uniform([1],-1,1))
bias = tf.Variable(tf.zeros([1]))
y = Weights * x_data  + bias

loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)

train = optimizer.minimize(loss)
init = tf.global_variables_initializer()

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

for step in range(1000):
    sess.run(train)
    if step % 20 == 0:
        print(step,sess.run(Weights),sess.run(bias))

sess.close()

訓練過程:

3.2 本例中涉及的Tensorflow的函數(shù)接口

3.2.1 tf.Varible()

該函數(shù)是Tensorflow聲明變量所用榆鼠,返回值為一個張量瑰步,括號內傳參為該變量的初始化值及大小等

3.2.2 Tensorflow隨機數(shù)生成函數(shù)

函數(shù)名稱 隨機數(shù)分布 主要參數(shù)
tf.random_normal 正態(tài)分布 平均值、標準差璧眠、取值類型
tf.truncated_normal 正態(tài)分布缩焦,但如果隨機出來的值偏離平均值超過兩個標準差,那么這個數(shù)就會被重新隨機 平均值责静、標準差袁滥、取值類型
tf.random_uniform 均勻分布 最小最大取值、取值類型
tf.random_gama Gamma分布 形狀參數(shù)alpha灾螃,尺度參數(shù)beta题翻,取值類型

3.2.3 Tensorflow常數(shù)生成函數(shù)

函數(shù)名稱 功能 樣例
tf.zeros 產生全0數(shù)組 tf.zeros([2,3],int32)->[[0,0,0],[0,0,0]]
tf.ones 產生全1數(shù)組 tf.ones([2,3],int32)->[[1,1,1],[1,1,1]]
tf.fill 產生一個全部為給定數(shù)字的數(shù)組 tf.fill([2,3],9)->[[9,9,9],[9,9,9]]
tf.constant 產生一個給定數(shù)值的常量 tf.constant([1,2,3])->[1,2,3]

3.2.4 優(yōu)化器和loss函數(shù)

這個之后單獨找一節(jié)我詳細敘述,我現(xiàn)在這一部分也懵懂狀態(tài)




reference

常見的Tensorflow函數(shù)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嵌赠,隨后出現(xiàn)的幾起案子塑荒,更是在濱河造成了極大的恐慌,老刑警劉巖姜挺,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齿税,死亡現(xiàn)場離奇詭異,居然都是意外死亡炊豪,警方通過查閱死者的電腦和手機凌箕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來词渤,“玉大人牵舱,你說我怎么就攤上這事∪迸埃” “怎么了芜壁?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長高氮。 經常有香客問我沿盅,道長,這世上最難降的妖魔是什么纫溃? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任腰涧,我火速辦了婚禮,結果婚禮上紊浩,老公的妹妹穿的比我還像新娘窖铡。我一直安慰自己,他們只是感情好坊谁,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布费彼。 她就那樣靜靜地躺著,像睡著了一般口芍。 火紅的嫁衣襯著肌膚如雪箍铲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天鬓椭,我揣著相機與錄音颠猴,去河邊找鬼。 笑死小染,一個胖子當著我的面吹牛翘瓮,可吹牛的內容都是我干的。 我是一名探鬼主播裤翩,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼资盅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起呵扛,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤每庆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后今穿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缤灵,經...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年荣赶,在試婚紗的時候發(fā)現(xiàn)自己被綠了凤价。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸽斟。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡拔创,死狀恐怖,靈堂內的尸體忽然破棺而出富蓄,到底是詐尸還是另有隱情剩燥,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布立倍,位于F島的核電站灭红,受9級特大地震影響,放射性物質發(fā)生泄漏口注。R本人自食惡果不足惜变擒,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寝志。 院中可真熱鬧娇斑,春花似錦、人聲如沸材部。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乐导。三九已至苦丁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間物臂,已是汗流浹背旺拉。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棵磷,地道東北人账阻。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像泽本,于是被迫代替她去往敵國和親淘太。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內容