TensorFlow中的神經(jīng)網(wǎng)絡(luò)

一 TensorFlow的安裝

  • 首先安裝numpy雁刷,需要最新版

pip install numpy

  • 之后安裝Tensorflow

pip install tensorflow


二 簡(jiǎn)單的TensorFlow例子

  • 讓計(jì)算機(jī)自己預(yù)測(cè)y = 0.3x + b
import tensorflow as tf
import numpy as np

# create data

x_data = np.random.rand(100).astype(np.float32)#初始化100以內(nèi)的值
y_data = x_data*0.1 + 0.3#根據(jù)隨機(jī)的x值計(jì)算y值

### create tensorflow structure start ###
#這個(gè)是線性回歸 y = Wx + b 其中W可能不是一個(gè)具體的數(shù)字,可能是一個(gè)矩陣,b為偏移量
Weights = tf.Variable(tf.random_uniform([2], -1.0, 1.0))#[1]是生成一個(gè)一維的數(shù),范圍在-0.1與1之間

biases = tf.Variable(tf.zeros([1]))#生成一個(gè)一維為0的數(shù)字

y = Weights*x_data + biases#這個(gè)是根據(jù)計(jì)算得到的曲線 反復(fù)計(jì)算用來學(xué)習(xí)

loss = tf.reduce_mean(tf.square(y-y_data))#計(jì)算估計(jì)的y與原先y的誤差
optimizer = tf.train.GradientDescentOptimizer(0.5)#定義學(xué)習(xí)效率
train = optimizer.minimize(loss)#這個(gè)就是在訓(xùn)練

init = tf.initialize_all_variables()#初始化整個(gè)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
### create tensorflow structure end ###

sess = tf.Session()     #定義一個(gè)繪畫類似指針的東西
sess.run(init)          # Very important指向了之前定義的神經(jīng)網(wǎng)絡(luò) 并且激活

for step in range(20000):
    sess.run(train)#真正的指向訓(xùn)練過程
    if step % 20 == 0:
        print(step, sess.run(Weights), sess.run(biases))v

三 TensorFlow中的Session進(jìn)一步學(xué)習(xí)

  • session其實(shí)就是負(fù)責(zé)啟動(dòng)這個(gè)神經(jīng)網(wǎng)絡(luò)的對(duì)象恭金。
  • session中的run方法 如果想用到tf中的方法 變量 就要使用run指向這個(gè)對(duì)象
  • 列子:兩個(gè)矩陣相乘
import tensorflow as tf
m1 = tf.constant([[2,3]]) #定義矩陣
m2 = tf.constant([[2],[3]])
product = tf.matmul(m1,m2) #這個(gè)就是矩陣相乘失乾,與numpy中的dot一樣
# sess = tf.Session()
# r = sess.run(product)
# print(r)
# sess.close()
with tf.Session() as sess:      #開啟session并且運(yùn)行product
    print(sess.run(product))

四 TensorFlow中的變量定義

  • 使用tensorFlow中的Variable作為變量
  • 使用tensorFlow中的constant做為常量
import tensorflow as tf
text1 = tf.Variable(0,'happy') #叫做happy的變量值為1 
one = tf.constant(1)#常量
new = tf.add(text1,one)#這是tf中的相加
update = tf.assign(text1,new)#把new附給text1
init = tf.initialize_all_variables()#這個(gè)很重要 初始化所有表變量
with tf.Session() as sess:
    sess.run(init)
    for each in range(3):
        sess.run(update)
        print(sess.run(text1))

五 tensorFlow中的placeholder

  • 這個(gè)模塊是控制負(fù)責(zé)接受外界輸入的
import tensorflow as tf
input1 = tf.placeholder(tf.float32) #定義一個(gè)input1參數(shù)
input2 = tf.placeholder(tf.float32)
update = tf.multiply(input1,input2)#這是兩個(gè)兩個(gè)數(shù)相乘
with tf.Session() as sess:
    print(sess.run(update,feed_dict= {input1:0.3,input2 :0.5}))#通過feed_dict參數(shù)來輸入數(shù)據(jù),這個(gè)參數(shù)是字典的形式.

六 激勵(lì)函數(shù)

  • 神經(jīng)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)接受輸入值锚沸,并將輸入值傳遞給下一層,輸入節(jié)點(diǎn)會(huì)將輸入屬性值直接傳遞給下一層(隱層或輸出層)涕癣。在神經(jīng)網(wǎng)絡(luò)中哗蜈,隱層和輸出層節(jié)點(diǎn)的輸入和輸出之間具有函數(shù)關(guān)系,這個(gè)函數(shù)稱為激勵(lì)函數(shù)坠韩。常見的激勵(lì)函數(shù)有:線性激勵(lì)函數(shù)距潘、閾值或階躍激勵(lì)函數(shù)、S形激勵(lì)函數(shù)只搁、雙曲正切激勵(lì)函數(shù)和高斯激勵(lì)函數(shù)等音比。
  • 我對(duì)激勵(lì)函數(shù)的理解:對(duì)于輸入的一個(gè)值,每一層的神經(jīng)元對(duì)這個(gè)值的敏感程度不同须蜗,會(huì)用不同的敏感程度硅确,把這個(gè)值放大或者縮小,傳入下一層神經(jīng)元明肮。
    Tensorflow中激勵(lì)函數(shù)傳送門
  • 激勵(lì)函數(shù)例子:添加一個(gè)層:
import tensorflow as tf
def add_layer(inputs,in_size,out_size,activation_function = None):
    Weight = tf.Variable(tf.random_normal([in_size,out_size]))
    biase = tf.Variable(tf.zeros([1,out_size]) + 0.1)
    Wx_plus_b = tf.matmul(inputs,Weight) + biase
    if activation_function is None:
        outputs = Wx_plus_b
    else:
        outputs = activation_function(Wx_plus_b)
    return outputs
  • 簡(jiǎn)單計(jì)算一下y = x^2 + 0.5 的損失
        

"""
Please note, this code is only for python 3+. If you are using python 2+, please modify the code accordingly.
"""
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

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) + biases
    if activation_function is None:
        outputs = Wx_plus_b
    else:
        outputs = activation_function(Wx_plus_b)
    return outputs

# Make up some real data
x_data = np.linspace(-1, 1, 300)[:, np.newaxis]#構(gòu)造出300個(gè)x值
noise = np.random.normal(0, 0.05, x_data.shape)#隨機(jī)生成影響值
y_data = np.square(x_data) * x_data - 0.5 + noise#根據(jù)構(gòu)造的值生成函數(shù)  y = x^2 - 0.5 + noise

##plt.scatter(x_data, y_data)
##plt.show()

# define placeholder for inputs to network
xs = tf.placeholder(tf.float32, [None, 1])#輸入的x
ys = tf.placeholder(tf.float32, [None, 1])#輸入的y
# add hidden layer
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)#這個(gè)是輸入的xs的神經(jīng)元 傳送給10個(gè)神經(jīng)元 用tf.nn.relu的激勵(lì)函數(shù)
# add output layer
prediction = add_layer(l1, 10, 1, activation_function=None)#輸出預(yù)測(cè)結(jié)果

# the error between prediciton and real data
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction), reduction_indices=[1]))#計(jì)算損失
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#訓(xùn)練 減少損失
# important step
init = tf.initialize_all_variables()
sess= tf.Session()
sess.run(init)

# plot the real data
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_data, y_data)
plt.ion()
plt.show()


for i in range(1000):
    # training
    sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
    if i % 50 == 0:
        # to visualize the result and improvement
        try:
            ax.lines.remove(lines[0])
        except Exception:
            pass
        prediction_value = sess.run(prediction, feed_dict={xs: x_data})
        # plot the prediction
        lines = ax.plot(x_data, prediction_value, 'r-', lw=5)
        plt.pause(1)

七 數(shù)據(jù)可視化

  • 需要用到matplotlib包

pip install matplotlib

fig = plt.figure() #創(chuàng)建一個(gè)圖
ax = fig.add_subplot(1,1,1)#規(guī)定圖的編號(hào)
ax.scatter(x_data, y_data)#寫入真實(shí)的數(shù)據(jù)
plt.ion()#畫圖表之后不要暫停
plt.show()#顯示圖標(biāo)
ax.lines.remove(lines[0])#去除第0條線
prediction_value = sess.run(prediction, feed_dict={xs: x_data})
lines = ax.plot(x_data, prediction_value, 'r-', lw=5)#生成紅色寬度為5的線
plt.pause(1) #暫停1秒

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菱农,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子柿估,更是在濱河造成了極大的恐慌循未,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秫舌,死亡現(xiàn)場(chǎng)離奇詭異的妖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)足陨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門嫂粟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墨缘,你說我怎么就攤上這事星虹×闾В” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵宽涌,是天一觀的道長(zhǎng)平夜。 經(jīng)常有香客問我,道長(zhǎng)卸亮,這世上最難降的妖魔是什么忽妒? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮兼贸,結(jié)果婚禮上段直,老公的妹妹穿的比我還像新娘。我一直安慰自己溶诞,他們只是感情好坷牛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著很澄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颜及。 梳的紋絲不亂的頭發(fā)上甩苛,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音俏站,去河邊找鬼讯蒲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肄扎,可吹牛的內(nèi)容都是我干的墨林。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼犯祠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旭等!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起衡载,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤搔耕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后痰娱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弃榨,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年梨睁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鲸睛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坡贺,死狀恐怖官辈,靈堂內(nèi)的尸體忽然破棺而出箱舞,到底是詐尸還是另有隱情,我是刑警寧澤钧萍,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布褐缠,位于F島的核電站,受9級(jí)特大地震影響风瘦,放射性物質(zhì)發(fā)生泄漏队魏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一万搔、第九天 我趴在偏房一處隱蔽的房頂上張望胡桨。 院中可真熱鬧,春花似錦瞬雹、人聲如沸昧谊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呢诬。三九已至,卻和暖如春胖缤,著一層夾襖步出監(jiān)牢的瞬間尚镰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工哪廓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狗唉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓涡真,卻偏偏與公主長(zhǎng)得像分俯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哆料,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容