国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

從知其然到知其所以然

2019-06-25 01:50丁偉孫凱
中國信息技術(shù)教育 2019年11期
關(guān)鍵詞:手寫實(shí)例代碼

丁偉 孫凱

神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)是人工智能教學(xué)中的算法層面的重要組成部分,而手寫數(shù)字識別可以作為神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的入門課,即通過讓計(jì)算機(jī)辨認(rèn)大量標(biāo)定好的手寫數(shù)字對它進(jìn)行訓(xùn)練,就可以識別0~9的手寫數(shù)字,是一種典型的有監(jiān)督學(xué)習(xí)。那么,在中小學(xué)如何進(jìn)行這種入門教學(xué),并在以體驗(yàn)為主的前提下,讓學(xué)生在現(xiàn)有知識基礎(chǔ)上能夠了解神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的基本原理呢?筆者在教學(xué)過程中利用虛谷號控制硬件引導(dǎo)學(xué)生通過學(xué)習(xí)基于MNIST訓(xùn)練集的手寫數(shù)字識別,初步建立對神經(jīng)網(wǎng)絡(luò)的基本認(rèn)識。

用虛谷號進(jìn)行Python和人工智能的教學(xué),則可以結(jié)合硬件制作出包含人工智能元素的作品。本實(shí)例用Python語言,首先編寫一個三層神經(jīng)網(wǎng)絡(luò),用MNIST訓(xùn)練集完成模型訓(xùn)練,并用畫圖軟件kolourpaint完成手寫數(shù)字,實(shí)現(xiàn)手寫數(shù)字識別,最后用虛谷號控制的LED燈閃爍次數(shù)來呈現(xiàn)對應(yīng)的數(shù)字。

● 配置環(huán)境

要讓虛谷號實(shí)現(xiàn)手寫數(shù)字的識別,就需要安裝一些必要的庫和繪圖軟件,虛谷號已經(jīng)預(yù)裝了Python3.5和部分庫,下面只要補(bǔ)充、升級相關(guān)庫即可,如圖1所示。

● 了解神經(jīng)網(wǎng)絡(luò)

一個完整的人工神經(jīng)網(wǎng)絡(luò)至少由輸入層、輸出層和隱藏層三部分構(gòu)成。神經(jīng)網(wǎng)絡(luò)的每一層都可以用若干個節(jié)點(diǎn)來表示某個元素的特征屬性(如圖2)。

● 手寫數(shù)字的csv格式

當(dāng)在28×28的區(qū)域?qū)懴乱粋€數(shù)字時,這個區(qū)域中就會留下顏色深淺不一的筆跡,接著將這28×28=784個像素點(diǎn)的顏色轉(zhuǎn)換成0~255之間對應(yīng)的灰度值并以csv文件格式存儲到一個數(shù)據(jù)表中(如下頁圖3)。同樣我們可以從網(wǎng)上(網(wǎng)址:https://pjreddie.com/projects/mnist-in-csv/)下載到這個有60000條數(shù)據(jù)的這個數(shù)據(jù)集。打開表格就會發(fā)現(xiàn)里面確實(shí)有60000行數(shù)據(jù),而且每行數(shù)據(jù)有785列,其中第一列是這個數(shù)字的標(biāo)簽即我們標(biāo)定的數(shù)字,后面的784列就是28×28個像素點(diǎn)對應(yīng)的灰度值。

學(xué)生有了以上的知識做基礎(chǔ),對后面的代碼理解就相對要容易一些了,當(dāng)然并不要求學(xué)生對每句代碼都理解,因?yàn)樵诮虒W(xué)中是要以模塊化的代碼來講解手寫數(shù)字識別這個案例的,即讓學(xué)生理解程序中每個模塊的作用,并通過修改模塊中的關(guān)鍵參數(shù)知道對程序執(zhí)行效率和結(jié)果的影響,進(jìn)而了解人工神經(jīng)網(wǎng)絡(luò)的基本原理。下面是筆者在教學(xué)中對這個實(shí)例的解析。

①神經(jīng)網(wǎng)絡(luò)類的建立。神經(jīng)網(wǎng)絡(luò)的搭建是一個復(fù)雜的過程也不需要初學(xué)者掌握,可以將其放到一個類里面,使用的時候直接用from語句導(dǎo)入即可。

②訓(xùn)練數(shù)據(jù)的導(dǎo)入。圖4中的第一行代碼括號內(nèi)的內(nèi)容為MNIST手寫數(shù)據(jù)集的路徑位置,這里使用了數(shù)據(jù)集中的前100條數(shù)據(jù)對模型進(jìn)行了訓(xùn)練。學(xué)生在實(shí)操過程中可以通過修改訓(xùn)練數(shù)據(jù)集的數(shù)據(jù)多少來分析其對準(zhǔn)確率的影響。

③設(shè)定參數(shù)搭建實(shí)例。模塊中輸入層的節(jié)點(diǎn)數(shù)為784,對應(yīng)的是28×28像素的圖片的784個灰度值;隱藏層節(jié)點(diǎn)為200個;輸出層的10個節(jié)點(diǎn)即0~9這10個手寫數(shù)字(如圖5)。

④設(shè)定訓(xùn)練次數(shù)(如圖6)。依次判斷輸入數(shù)字是0~9的概率,選擇概率最大的那一個為輸出結(jié)果。

⑤使用手寫數(shù)字檢查訓(xùn)練結(jié)果(如圖7)。使用img_arry =imageio.imread(‘****,as_gray=Ture)語句導(dǎo)入手寫的數(shù)字圖片,其中****的內(nèi)容為圖片在計(jì)算機(jī)中的保存路徑。

⑥運(yùn)行實(shí)例。使用IDLE3打開上面保存的實(shí)例,運(yùn)行實(shí)例,使用不同的訓(xùn)練集運(yùn)行時間不同。運(yùn)行結(jié)束后,結(jié)果中列出了手寫數(shù)字是0~9這10個數(shù)字的概率,而計(jì)算機(jī)會把概率最高的那一項(xiàng)認(rèn)為是筆者所寫的數(shù)字,這里計(jì)算機(jī)輸出的結(jié)果是4,這個結(jié)果對不對呢?打開路徑中那張圖片看一下就知道了(如圖8)。

為了解除學(xué)生的疑惑筆者讓學(xué)生通過修改圖8中的數(shù)字后再次運(yùn)行實(shí)例,查看結(jié)果。

經(jīng)過反復(fù)修改程序中的參數(shù)學(xué)生得出了以下幾個結(jié)論:第一,訓(xùn)練集中的數(shù)據(jù)量越多準(zhǔn)確率越高;第二,手寫數(shù)字是否規(guī)范對準(zhǔn)確率影響很大;第三,訓(xùn)練集中的數(shù)據(jù)量越大程序運(yùn)行時間越長。

該實(shí)例也可以在PC機(jī)上運(yùn)行,但是通過虛谷號可以控制硬件,進(jìn)而讓學(xué)生更加直觀地了解人工智能的廣泛應(yīng)用,創(chuàng)作出有質(zhì)感的智能作品。虛谷號只要導(dǎo)入虛谷庫就能實(shí)現(xiàn)Python環(huán)境下軟硬件的互通。另外,還可以利用上面手寫數(shù)字的判斷結(jié)果來制作一個識字閃燈的游戲,讓虛谷根據(jù)識別到的數(shù)字控制LED燈閃爍對應(yīng)的次數(shù),代碼如圖9所示。

代碼中首先導(dǎo)入了虛谷庫和時間庫,然后使用循環(huán),將識別結(jié)果(label)作為循環(huán)次數(shù)實(shí)現(xiàn)閃燈的效果。此外也可以引導(dǎo)學(xué)生使用舵機(jī)、馬達(dá)、蜂鳴器等設(shè)計(jì)出獨(dú)具特色的智能產(chǎn)品。

利用虛谷號的代碼程序更加貼近程序開發(fā)的原始環(huán)境,適合有一定程序基礎(chǔ)的高年級學(xué)生學(xué)習(xí),同時高年級的學(xué)生,具有一定的項(xiàng)目策劃和動手能力,能夠利用虛谷號軟硬兼容的特點(diǎn)創(chuàng)作出一些技術(shù)與藝術(shù)完美融合的作品。

猜你喜歡
手寫實(shí)例代碼
我手寫我心
我手寫我意
神秘的代碼
一周機(jī)構(gòu)凈增(減)倉股前20名
重要股東二級市場增、減持明細(xì)
6萬字的情書
近期連續(xù)上漲7天以上的股
網(wǎng)絡(luò)時代更需要手寫的溫暖
完形填空Ⅱ
完形填空Ⅰ