驗證佮開發仝款重要
咱學一項物件, 無論你是學趣味--ê 抑是欲賺食, 總是愛有法度驗證你學ê物件有路用--無. 若學規半晡 , 紲干焦會當家己歕雞胿講家己偌gâu, 這就毋是科學 ê 精神.
神經網路閣較是按呢生.
毋過佇咧開發階段, 欲按怎了解佇咧初步階段到一个坎站, 就先看家己開發 ê 方向有走精去--無?
另外, 若是欲教學, 予學生作實驗, 欲按怎設計咧?
咱需要一寡教具, 佇這本書: Deep Learning|用Python進行深度學習的基礎理論實作 ê 作者, 提供咱一咧真好資料庫: MNIST 資料集
MNIST 資料集
MNIST (台羅:Em-ni-sut) 資料集是佇網路公開 ê 資料集 (database). 佇機器學習領域中方, 是名聲蓋響亮. 伊是數字 0 到 9 ê 圖片組成, 有 6 萬張訓練圖片, 1 萬張測試圖片.
訓練圖片是予你用來訓練你 ê 機器. 佇咱 ê Python Deep Learning 課程中, 機器就是咱寫个神經網路程式.
測試圖片是予你用來測你个機器 ê 程度: 予伊看圖, 伊看著 ê 數字著--無?
MNIST 佇網路 ê 地址是: http://yann.lecun.com/exdb/mnist/
欲按怎使用 MNIST 資料集
既然伊是一咧圖片 ê 資料集, 伊都是牽涉著電腦欲按怎處理影像 (image) ê 智識, 閣有欲按怎使用 Python ê 工具 (Module, function) 來處理影像 ê 智識. 這若是欲講起來就話頭長, 咱這馬先欲注心佇深學這个學問本身, 所以知影按怎使用就好. 若有需要 ê 智識, 咱拄著才閣來了解就好--阿.
MNIST 資料集, 愛去網路頂仔kā伊捎--轉來, 佇這本冊 ê 作者已經寫好一个現成 ê Python ê 式來做這項大誌, 這囥佇伊書內佮 ê github 網頁:
https://github.com/oreilly-japan/deep-learning-from-scratch
你會使用 git 命令kā伊搝--落來:(所以頭一擺運行愛 kā 你的電腦連出去網路)
才閣去予伊 ê mnist_show.py 起行:
你就會看著:
我佇 Ubuntu 17.10 看著 ê 這个 "5", 是足細足細, 有用貓鼠 kā 伊小可搝較大咧.
你若是去伊 ê dataset/ 目錄, 你會看著加 4 ê gz 檔:
彼就是去網路頂搝--落來--ê.
書頂面有解說講 mnist.py 是按怎寫--ê. 若有興趣會當去讀. 毋過, 我想重點是 欲按怎使用 load_mnist() 這个寫好 ê 函式, 咱測試會使用著, 佇 mnist_show.py 咱就有看著伊的使用是真簡單, 這是伊的原始碼:
咱小來解說這个程式个內容:
是共你的頂一棧目錄加入去 Module ê 搜揣路草. 咱用 cd deep-learning-from-scratch/ch03 來去予 python3 mnist_show.py 起行, deep-learning-from-scratch/ch03/ 就是現此時/目前目錄(current directory) python 程式本身起行 ê 路徑, os.pardir 是頂一沿(upper layer), 也就是 deep-learning-from-scratch/.
因為咱欲使用 ê load_mnist() 是囥佇 deep-learning-from/scratch/dataset/, 所致愛共搜揣路草設懸一棧.
dataset/ 規个子目錄, 就是定義一組 module, 伊的名是 dataset. dataset.mnist 就是去共 dataset/mnist.py 內面寫好的物件捎--入來!
load_mnist() 介紹
load_mnist() 是真重要 ê 函式, 愛共伊小了解一个:
神經網路有兩的崁站: 訓練 (training) 佮測驗 (test), (x_train, t_train) 是訓練用--个. (x_test, t_test) 是測驗用--个.
x_train 是規組訓練个圖, t_train 是圖 ê 內容. x_train[i] ê 圖若是 5, t_train[i] 就是數字 5. in 兩个攏是陣列 (array)
flatten 是欲共資料抹予平--無? 因為本底一張圖是 28x28 ê 二維陣列, 共伊抹予平就是仝款 ê 資料, 毋過共伊降低維度, uì兩維陣列成做相連紲 ê 28*28 = 784 ê 孤維陣列.
normalize 是欲 kā 圖內底逐个 pixel (台羅:Phí-sòo) 个數字範圍限制佇 1 來底--無?本底若是一个 Phí-sòo, 數字範圍是 0~255. normalize 了後就成做 0~1 之間.
one_hot_label=True/False 是予你指定正確答案 t 表示个形式. 若是 True, 掠準 3 是 t[123] ê 答案, t[123] = [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]. 若是 False, t[123] 就是 3 爾爾. 這也是愛看佗一種表示較合用.
這寡選項是和圖形處理按怎做較好有關係, 咱這馬先照咧做.
為著予家己較熟手一咧, 嘛閣較了解 load_mnist(), 我小可改 mnist_show(), 予伊印較濟圖出來, 程式囥佇遮: mnist_show-mine.py:
簡單是kā 28x28 ê 圖, 佇 y 方向一直疊--起哩. 這當然是愛小可了解圖佇電腦--裡, 陣列是按怎表示, 才予咱人看有?
你看, 平平是 1, 有向前小可仔斜斜(tshiâ), 嘛有向後略略仔䖙䖙, 有个一屑屑仔鬚鬚, 抑是彎彎. 這對咱人來講無問題, 攏是 1. 毋過對機器來講, 就是大問題.
我 ê mnist_show-mine.py
為著予家己較熟手一咧, 嘛閣較了解 load_mnist(), 我小可改 mnist_show(), 予伊印較濟圖出來, 程式囥佇遮: mnist_show-mine.py:簡單是kā 28x28 ê 圖, 佇 y 方向一直疊--起哩. 這當然是愛小可了解圖佇電腦--裡, 陣列是按怎表示, 才予咱人看有?
你看, 平平是 1, 有向前小可仔斜斜(tshiâ), 嘛有向後略略仔䖙䖙, 有个一屑屑仔鬚鬚, 抑是彎彎. 這對咱人來講無問題, 攏是 1. 毋過對機器來講, 就是大問題.
2 則留言:
你好,我想知道怎麼使用mnist.py,按照您說的輸入git clone https://github.com/oreilly-japan/deep-learning-from-scratch.git,但會出現invalid syntax,在git clone的e下面會有小箭頭,目前卡在這,也就無法使用mnist_show.py了,請老師幫忙解惑,謝謝!
你好:
請問: 你是
git clone https://github.com/oreilly-japan/deep-learning-from-scratch.git
有問題是無?
對我來講, 共 "git clone https://github.com/oreilly-japan/deep-learning-from-scratch.git" 規逝 copy 落來是會使用个, 凡勢是你的網路抑是 git 這個工具無安裝好?
張貼留言