国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【深度學習】2-4 神經(jīng)網(wǎng)絡-手寫數(shù)字識別

這篇具有很好參考價值的文章主要介紹了【深度學習】2-4 神經(jīng)網(wǎng)絡-手寫數(shù)字識別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在實現(xiàn)對手寫數(shù)字圖像的分類,可以先假設學習已經(jīng)全部結(jié)束,我們使用學習到的參數(shù),先實現(xiàn)神經(jīng)網(wǎng)絡的“推理處理”。該處理也稱為神經(jīng)網(wǎng)絡的前向傳播。

和求解機器學習問題的步驟(分成學習和推理兩個階段進行)一樣
使用神經(jīng)網(wǎng)絡解決問題時,也需要首先使用訓練數(shù)據(jù)(學習數(shù)據(jù))進行權重參數(shù)的學習;進行推理時,使用剛才學習到的參數(shù),對輸入數(shù)據(jù)進行分類。

MNIST數(shù)據(jù)集
MNIST是機器學習最有名的數(shù)據(jù)集之一,被應用于從簡單的實驗到發(fā)表的論文研究等各種場合,在閱讀圖像識別或機器學習的論文時,MNIST數(shù)據(jù)集經(jīng)常作為實驗用的數(shù)據(jù)出現(xiàn)。
MINIST數(shù)據(jù)集是由0到9的數(shù)字圖像構成的,MNIST數(shù)據(jù)集的使用方法是,先用訓練圖像進行學習,再用學習到的模型度量能在多大程度上對測試圖像進行正確的分類。

MNIST的圖像數(shù)據(jù)是28像素 x 28像素的灰度圖像(1通道),各個像素的取值在0到255之間。每個圖像數(shù)據(jù)都相應地標有“7”“2”“1”等標簽

這里通過Python的腳本mnist.py,從下載MNIST數(shù)集到將這些數(shù)據(jù)轉(zhuǎn)換成NumPy數(shù)組等處理,使用mnistpy中的load_mnist()函數(shù),就可以按下述方式輕松讀入MNIST數(shù)據(jù)。

注意這里的mnist.py不具備通用性,只能用在學習項目中,做學習了解(具體可以參考網(wǎng)上知識,在此不詳述)

Python有pickle這個功能,可以將程序運行中的對象保存為文件,如果加裁保存過的pickle文件,可以立刻復原之前程序運行中的對象。利用pickle功能,可以高效地完成MINIST數(shù)據(jù)的準備工作。pickle.load(f)

手寫數(shù)字識別的例子

# coding: utf-8
import sys, os
sys.path.append(os.pardir)  # 為了導入父目錄的文件而進行的設定
import numpy as np
from dataset.mnist import load_mnist

(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)

# 輸出各個數(shù)據(jù)的形狀
print(x_train.shape)   # (60000784)
print(t_train.shape)  # (60000,)
print(x test.shape)   #(10000,784)
print(t_test.shape)   # (10000,)


上面的代碼中,先導人dataset/mnist.py中的load_mnist函數(shù)。load mnist函數(shù)以“(訓練圖像,訓練標簽),(測試圖像,測試標簽)”的形式返回讀人的MNIST數(shù)據(jù)。
然后想 load_mnist(normalize=True,flatten=True,one_hot_label=False)這樣,設置3個參數(shù)。
normalize設置是否將輸人圖像正規(guī)化為0.0~1.0的值。
flatten設置是否展開輸人圖像(變成一維數(shù)組)。若設置為True,則輸人圖像會保存為由784個元素構成的一維數(shù)組。
one_hot_label設置是否將標簽保存為one-hot表示。one-hot表示是僅正確解標簽為1,其余皆為0的數(shù)組,就像[0,0,1,0,0,0,0,0,0,0]這樣。當one_hot_label為True時,標簽則保存為one-hot表示。

后面顯示MINIST圖像,同時也確認一下數(shù)據(jù)。圖像的是使用PIL(Python Image Library)模塊。執(zhí)行下述代碼后,訓練圖像的第一張就會顯示出來

# coding: utf-8
import sys, os
sys.path.append(os.pardir)  # 為了導入父目錄的文件而進行的設定
import numpy as np
from dataset.mnist import load_mnist
from PIL import Image


def img_show(img):
    pil_img = Image.fromarray(np.uint8(img))
    pil_img.show()

(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)

img = x_train[0]
label = t_train[0]
print(label)  # 5

print(img.shape)  # (784,)
img = img.reshape(28, 28)  # 把圖像的形狀變?yōu)樵瓉淼某叽?print(img.shape)  # (28, 28)

img_show(img)

要注意的是,flatten=True時讀人的圖像是以一列(一維)NumPy數(shù)組的形式保存的。因此,顯示圖像時,需要把它變?yōu)樵瓉淼?8像素 x 28像素的形狀。可以通過reshape()方法的參數(shù)指定期望的形狀。。此外,還需要把保存為NumPy數(shù)組的圖像數(shù)據(jù)轉(zhuǎn)換為PIL用的數(shù)據(jù)對象,這個轉(zhuǎn)換處理由Image.fromarray()來完成。

神經(jīng)網(wǎng)絡的推理處理
對這個MNIST數(shù)據(jù)集實現(xiàn)神經(jīng)網(wǎng)絡的推理處理。

神經(jīng)網(wǎng)絡的輸人層有784個神經(jīng)元,輸出層有10個神經(jīng)元。
輸人層的784這個數(shù)字來源于圖像大小的28x28=784,
輸出層的10這個數(shù)字來源于10類別分類(數(shù)字0到9,共10類別)。
此外,這個神經(jīng)網(wǎng)絡有2個隱藏層,第1個隱藏層有50個神經(jīng)元,第2個隱藏層有100個神經(jīng)元。

先定義get_data()、init_network()predict() 這3個函數(shù)

def get data():
	(x_train,t_train),(x_test,t_test) = load_mnist(normalize=True,flatten=True,one_hot_label=False)
	return x_test, t_test

def init_network():
	with open("sample_weight.pkl",'rb') as f:
		network = pickle.load(f)
	return netwrok

def predict(network, x):
	W1,W2,w3 = network['W1'], network['W2'], network['w3']
	bl,b2, b3 = network['b1'],network['b2'], network['b3']
	a1 = np.dot(x,W1)+b1
	z1 = sigmoid(a1)
	a2 = np.dot(a1,W2) +b2
	z2 = sigmoid(a2)
	a3=np.dot(a2,W3)+b3
	y = sigmoid(a3)

	reutrn y

init_network()會讀入保存在pickle文件 sample_weight.pkl 中的學習到的權重參數(shù)
現(xiàn)在,用這3個函數(shù)來實現(xiàn)神經(jīng)網(wǎng)絡的推理處理。然后,評價它的識別精度即能在多大程度上正確分類。

# 獲取數(shù)據(jù)
x, t = get_data()
# 初始化network
network =init_network()

accuracy_cnt =0
for i in range(len(x)):
	y = predict(network,x[i]) # predict()函數(shù)以NumPy數(shù)組的形式輸出各個標簽對應的概率
	p=np.argmax(y)  # 獲取概率最高的元素的索引
	if p == t[i]:
		accuracy_cnt += 1
print("Accuracy:" + str(float(accuracy_cnt) / len(x)))  # 比較神經(jīng)網(wǎng)絡所測的答案和正確解標簽,將回答正確的概率作為識別精度。

目前這個代碼的精度還不是很高,后續(xù)會在神經(jīng)網(wǎng)絡的結(jié)構和學習方法上優(yōu)化來提高這個精度

把load_mnist函數(shù)的參數(shù)normalize設置成了True。將normalize設置成True后,函數(shù)內(nèi)部會進行轉(zhuǎn)換,將圖像的各個像素值除以255,使得數(shù)據(jù)的值在0.0~1.0的范圍內(nèi)。像這樣把數(shù)據(jù)限定到某個范圍內(nèi)的處理稱為正規(guī)化。這種對神經(jīng)網(wǎng)絡的輸人數(shù)據(jù)進行某種既定的轉(zhuǎn)換稱為預處理。

預處理在神經(jīng)網(wǎng)絡(深度學習)中非常實用,實際上,很多預處理都會考慮到數(shù)據(jù)的整體分布,比如,利用數(shù)據(jù)整體的均值或標準差,移動數(shù)據(jù),使數(shù)據(jù)整體以0為中心分布。文章來源地址http://www.zghlxwxcb.cn/news/detail-491833.html

到了這里,關于【深度學習】2-4 神經(jīng)網(wǎng)絡-手寫數(shù)字識別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 計算機競賽 卷積神經(jīng)網(wǎng)絡手寫字符識別 - 深度學習

    計算機競賽 卷積神經(jīng)網(wǎng)絡手寫字符識別 - 深度學習

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 ?? 卷積神經(jīng)網(wǎng)絡手寫字符識別 - 深度學習 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://gitee.com/d

    2024年02月12日
    瀏覽(24)
  • 機器學習第一周:用卷積神經(jīng)網(wǎng)絡實現(xiàn)Mnist手寫數(shù)字識別(付基礎知識解釋)

    MNIST 數(shù)據(jù)集是一個手寫數(shù)字識別數(shù)據(jù)集,包含了 60000 張訓練圖像和 10000 張測試圖像,每張圖像都是 28x28 像素的灰度圖像。 在這個代碼中,我們首先使用了 numpy 庫中的 np.random.seed() 方法來設置隨機種子,以確保結(jié)果可重復。 然后,我們使用了 Keras 中的 mnist.load_data() 方法來

    2024年02月08日
    瀏覽(29)
  • 手寫數(shù)字識別--神經(jīng)網(wǎng)絡實驗

    手寫數(shù)字識別--神經(jīng)網(wǎng)絡實驗

    ?我自己搞的代碼,預測精度才94% 神經(jīng)網(wǎng)絡實驗報告源碼.zip - 藍奏云 ?老師給的實驗源碼答案和資料,預測精度高達99% 深度學習實驗報告.zip - 藍奏云 上深度學習的課程,老師布置了一個經(jīng)典的實驗報告,我做了好久才搞懂,所以把實驗報告放到CSDN保存,自己忘了方便查閱

    2024年02月06日
    瀏覽(22)
  • 神經(jīng)網(wǎng)絡基礎-手寫數(shù)字識別

    神經(jīng)網(wǎng)絡基礎-手寫數(shù)字識別

    基本原理 圖像本質(zhì)上被認為是一個矩陣,每個像素點都是一個對應的像素值,相當于在多維數(shù)據(jù)上進行相關的歸類或者其他操作。 線性函數(shù) 線性函數(shù)的一個從輸入到輸出的映射,用于給目標一個每個類別對應的得分。 圖像 ( 32 ? 32 ? 3 ) → f ( x , W ) Y 圖像(32*32*3) stackrel{

    2024年02月02日
    瀏覽(24)
  • 手寫數(shù)字識別-基于卷積神經(jīng)網(wǎng)絡

    手寫數(shù)字識別-基于卷積神經(jīng)網(wǎng)絡

    ??歡迎來到機器學習的世界? ??博客主頁:卿云閣 ???歡迎關注??點贊??收藏??留言?? ??本文由卿云閣原創(chuàng)! ??本階段屬于練氣階段,希望各位仙友順利完成突破 ??首發(fā)時間:??2021年6月5日?? ??希望可以和大家一起完成進階之路! ??作者水平很有限,如果發(fā)

    2024年02月10日
    瀏覽(18)
  • 【神經(jīng)網(wǎng)絡手寫數(shù)字識別-最全源碼(pytorch)】

    【神經(jīng)網(wǎng)絡手寫數(shù)字識別-最全源碼(pytorch)】

    Torch安裝的方法 學習方法 1.邊用邊學,torch只是一個工具,真正用,查的過程才是學習的過程 2.直接就上案例就行,先來跑,遇到什么來解決什么 Mnist分類任務: 網(wǎng)絡基本構建與訓練方法,常用函數(shù)解析 torch.nn.functional模塊 nn.Module模塊 讀取Mnist數(shù)據(jù)集 會自動進行下載 784是m

    2024年02月14日
    瀏覽(47)
  • 用C語言構建一個手寫數(shù)字識別神經(jīng)網(wǎng)絡

    用C語言構建一個手寫數(shù)字識別神經(jīng)網(wǎng)絡

    (原理和程序基本框架請參見前一篇 \\\"用C語言構建了一個簡單的神經(jīng)網(wǎng)路\\\") 1.準備訓練和測試數(shù)據(jù)集 從http://yann.lecun.com/exdb/mnist/下載手寫數(shù)字訓練數(shù)據(jù)集, 包括圖像數(shù)據(jù)train-images-idx3-ubyte.gz 和標簽數(shù)據(jù) train-labels-idx1-ubyte.gz. 分別將他們解壓后放在本地文件夾中,解壓后文件名

    2024年02月14日
    瀏覽(24)
  • pytorch集智-5手寫數(shù)字識別器-卷積神經(jīng)網(wǎng)絡

    pytorch集智-5手寫數(shù)字識別器-卷積神經(jīng)網(wǎng)絡

    簡稱:CNN,convolutional neural network 應用場景:圖像識別與分類(CNN),看圖說話(CNN+RNN)等 優(yōu)越性:和多層感知機相比,cnn可以識別獨特的模式,可以自動從數(shù)據(jù)中提取特征。一般機器學習需要特征工程,cnn可以自動識別,極大代替或取代了特征工程 和多層感知機原理不同

    2024年01月19日
    瀏覽(24)
  • CNN卷積神經(jīng)網(wǎng)絡實現(xiàn)手寫數(shù)字識別(基于tensorflow)

    CNN卷積神經(jīng)網(wǎng)絡實現(xiàn)手寫數(shù)字識別(基于tensorflow)

    卷積網(wǎng)絡的 核心思想 是將: 局部感受野 權值共享(或者權值復制) 時間或空間亞采樣 卷積神經(jīng)網(wǎng)絡 (Convolutional Neural Networks,簡稱: CNN )是深度學習當中一個非常重要的神經(jīng)網(wǎng)絡結(jié)構。它主要用于用在 圖像圖片處理 , 視頻處理 , 音頻處理 以及 自然語言處理 等等。

    2024年02月11日
    瀏覽(23)
  • PyTorch訓練簡單的全連接神經(jīng)網(wǎng)絡:手寫數(shù)字識別

    數(shù)據(jù)集:MNIST 該數(shù)據(jù)集的內(nèi)容是手寫數(shù)字識別,其分為兩部分,分別含有60000張訓練圖片和10000張測試圖片 神經(jīng)網(wǎng)絡:全連接網(wǎng)絡 【1】https://www.youtube.com/watch?v=Jy4wM2X21u0list=PLhhyoLH6IjfxeoooqP9rhU3HJIAVAJ3Vzindex=3

    2024年02月16日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包