Python深度学习6之神经网络
Python神經(jīng)網(wǎng)絡(luò)6之神經(jīng)網(wǎng)絡(luò)
- 神經(jīng)網(wǎng)絡(luò)
- 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
- 神經(jīng)網(wǎng)絡(luò)
- 感知機(jī)
- playground使用
- 神經(jīng)網(wǎng)絡(luò)原理
- softmax回歸
- 交叉熵?fù)p失
- softmax、交叉熵?fù)p失API
- 案例:Mnist手寫(xiě)數(shù)字識(shí)別
- 數(shù)據(jù)集介紹
- Mnist數(shù)據(jù)獲取API
- 實(shí)戰(zhàn):Mnist手寫(xiě)數(shù)字識(shí)別
神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)也簡(jiǎn)稱為神經(jīng)網(wǎng)絡(luò),是一種模仿和生物神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和功能的計(jì)算模型。經(jīng)典的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)包含三個(gè)層次的神經(jīng)網(wǎng)絡(luò)。分別為輸入層,輸出層以及隱藏層
其中每層的圓圈代表一個(gè)神經(jīng)元,隱藏層和輸出層的神經(jīng)元有輸入的數(shù)據(jù)計(jì)算后輸出,輸入層的神經(jīng)元只需輸入
感知機(jī)
感知機(jī)就是模擬這樣的大腦神經(jīng)網(wǎng)絡(luò)處理數(shù)據(jù)的過(guò)程,感知機(jī)模型如下圖:
感知機(jī)是一種最基礎(chǔ)的分類模型,類似于法邏輯回歸,不同的是,感知機(jī)的激活函數(shù)用的是sign,而邏輯回歸用的是sigmoid,感知機(jī)也具有連接的權(quán)重和偏置
sign函數(shù)9
playground使用
官方網(wǎng)址
感知機(jī)可以解決的問(wèn)題:簡(jiǎn)單的與或問(wèn)題
0 0 =>0
0 1 =>1
1 0 =>1
1 1 =>0
0 0 =>0
0 1 =>0
1 0 =>0
1 1 =>1
任意畫(huà)一條對(duì)角線來(lái)分隔兩組數(shù)據(jù)點(diǎn),定義一個(gè)閾值以確定每個(gè)數(shù)據(jù)點(diǎn)屬于哪一個(gè)組
其中b是確定線的位置的閾值,通過(guò)分別對(duì)x1和x2賦予權(quán)重w1和w2,就可以進(jìn)行分類了
紅色劃分 與,綠色劃分 或
0 0 => 0
0 1 => 1
1 0 =>1
1 1 => 0
神經(jīng)網(wǎng)絡(luò)原理
神經(jīng)網(wǎng)絡(luò)的主要用途在于分類
softmax回歸
softmax回歸將神經(jīng)網(wǎng)絡(luò)輸出轉(zhuǎn)換成概率結(jié)果
logits加上softmax映射 - 多分類問(wèn)題
交叉熵?fù)p失
為了能夠衡量距離,目標(biāo)值需要進(jìn)行one-hot編碼,能與概率值一一對(duì)應(yīng),如下圖:
yi’ 是真實(shí)值,yi 是輸出的結(jié)果
-0*log0.1-0*log0.05-…-1*log0.1=1
上述的結(jié)果是1*log(0.1),那么為了減少這個(gè)樣本的損失,神經(jīng)網(wǎng)絡(luò)應(yīng)該提高對(duì)應(yīng)目標(biāo)值為1的位置輸出概率的大小,由于softmax公式的影響,其他的概率必定會(huì)減少,進(jìn)行這樣的調(diào)整就能預(yù)測(cè)成功了。
神經(jīng)網(wǎng)絡(luò)最后的損失為平均每個(gè)樣本的損失大小
- 對(duì)所有的樣本的損失求和取其平均值
softmax、交叉熵?fù)p失API
- tf.nn.softmax_cross_entropy_with_logits(labels=None,logits=None,name=None)
計(jì)算logits和labels之間的交叉損失熵
labels:標(biāo)簽值
logits:樣本加權(quán)之后的值
return:返回?fù)p失值列表 - tf.reduce_mean(input_tensor)
計(jì)算張量的尺寸的元素平均值
案例:Mnist手寫(xiě)數(shù)字識(shí)別
數(shù)據(jù)集介紹
下載網(wǎng)址
數(shù)據(jù)集被劃分為兩部分:55000行的訓(xùn)練數(shù)據(jù)集(mnist.train)和10000行的測(cè)試數(shù)據(jù)集(mnist.test)。每一個(gè)MNIST數(shù)據(jù)單元有兩部分組成:一張包含手寫(xiě)數(shù)字的圖片和一個(gè)對(duì)應(yīng)的標(biāo)簽。我們把這些圖片設(shè)為“xs”,把這些標(biāo)簽設(shè)為“ys”。訓(xùn)練數(shù)據(jù)集合測(cè)試數(shù)據(jù)集都包含xs和ys,比如訓(xùn)練數(shù)據(jù)集的圖片是mnist.train.images,訓(xùn)練集的標(biāo)簽是mnist.train.labels。
圖片是黑白圖片,每一張圖片包含28像素×28像素。我們把這個(gè)數(shù)組展開(kāi)成一個(gè)向量,長(zhǎng)度是28×28=784。因此,在MNIST訓(xùn)練數(shù)據(jù)集中,mnist.train.images是一個(gè)形狀為[60000,784]的張量
用one-hot編碼
表示3的話:
0,1,2,3,4,…,9
0,0,0,1,0,…,0
Mnist數(shù)據(jù)獲取API
TensorFlow框架自帶了獲取這個(gè)數(shù)據(jù)集的接口,所以不需要自行讀取
- from tensorflow.examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets(path,one_hot=True)- mnist.train.next_batch(100)(提供批量獲取功能)
- mnist.train.images、labels
- mnist.test.images、labels
實(shí)戰(zhàn):Mnist手寫(xiě)數(shù)字識(shí)別
我們采用只有一層,即最后一個(gè)輸出層的神經(jīng)網(wǎng)絡(luò),也稱之為全連接層神經(jīng)網(wǎng)絡(luò)
本質(zhì):矩陣計(jì)算
y=w1 x1+w2 x2+…+b
x[None,784]*weights[784,10]+bias[10] =y_predict[None,10]
error=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_true,logits=y_predic t,name=None))
優(yōu)化損失:梯度下降
- tf.matmul(a,b,name=None)+bias
return:全連接結(jié)果,供交叉損失運(yùn)算 - tf.train.GradientDescentOptimizer(learning_rate)
梯度下降
learning_rate:學(xué)習(xí)率
method:- minimize(loss):最小化損失
- 準(zhǔn)確率計(jì)算
- equal_list=tf.equal(tf.argmax(y,1),tf.argmax(y_label,1))
- accuracy=tf.reduce_mean(tf.cast(equal_list,tf.float32))
比較輸出結(jié)果最大值所在位置和真實(shí)值的最大值所在位置
y_true的形狀:(None,10)
tf.argmax(y_true,1)
tf.argmax(y_predict,1)
總結(jié)
以上是生活随笔為你收集整理的Python深度学习6之神经网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 名词解释-雪崩效应
- 下一篇: Python使用selenium模块模拟