2018年1月17日 星期三

Python Deep Learning 深學筆記 - 訓練好个神經網路

←前一篇     後一篇→


佇遮, 咱欲結合學著 ê 神經網路智識, 來認捌前一篇所介紹 ê MNIST 資料集.

一个完整 ê 神經網路智識, 愛有 "學習" 佮 "推論" 兩个階段, 就敢若咱人若是欲會曉一種技術, 嘛是愛先學習, 出師了後, 才開始展工夫. 毋過, 這篇, 干焦有展工夫予你看. 這个神經網路已經訓練好阿. 原作者佇遮, 想欲展示予咱看會是: 咱進前介紹 ê 三棧神經網路, 予伊有夠濟个神經元, 用咱學過 ê Mé-thuì Dot 運算, 閣有定義好个戛火函數, 伊是有法度認捌 MNIST 內底ê資料集--ê.

Python Pickle 功能 ê 介紹

PicklePython ê module, 若是看伊英文說明: "The pickle module implements binary protocols for serializing and de-serializing a Python object structure.", 伊是 kā Python ê 物件 (object) 成做二元 ê 資料水(註1, 看下跤) (serial data stream).  按呢抑是誠抽象.

咱來做一个比喻: 物件 (object) 你會當想做一个立體, 有佔著空間 ê 物件, 親像棉襀被, 椅仔, .... 若是有一个奇術師, 有一條長長 ê 水管, 伊會當 kā 棉襀被硩扁, 縮小, uì 水管頭櫼入去. 紲落來, 嘛 kā 椅仔櫼入去, 紲落來啥乜 li-li-khok-khok 攏照順序櫼入去....

按呢, 立體 ê 物件變做無維度 (dimension) 抑就是無結構 (structure), 敢若親像水佇水管裡排隊, 這就是
資料水 (serial data stream).

會使變做資料水, 當然嘛愛會使變轉來, 若無這个魔術師就失業囉! 變做資料水 ê 過程號做 serializing, 變轉來 ê 過程號做  de-serializing.

講到遮你若是閣霧嗄嗄嘛bua̋i 緊. Pickle ê 意思是 "泡菜/醬菜/豉ê物", 就是會使囥真久袂歹去. 所以  Pickle 就會使予咱用內囥一寡咱做到一半 ê 資料, 先儉起來, 欲食才提出來.

咱進前講个, 這个神經網路, 已經訓練好阿, 作者就先用 Pickle ê 形式儉起來, 咱就 kā 豉好个"泡菜" 提出來食就好阿.

 MNIST ê 推論網路

這愛用著作者 ê 例, 佇前一篇已經有講按怎去 github 掠伊的例, 佇 ch03/neuralnet_mnist.py:

import sys, os
sys.path.append(os.pardir)  # 設 module 搜揣路草
import numpy as np
import pickle
from dataset.mnist import load_mnist
from common.functions import sigmoid, softmax


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 network


def predict(network, x):
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    a1 = np.dot(x, W1) + b1
    z1 = sigmoid(a1)
    a2 = np.dot(z1, W2) + b2
    z2 = sigmoid(a2)
    a3 = np.dot(z2, W3) + b3
    y = softmax(a3)

    return y


x, t = get_data()
network = init_network()
accuracy_cnt = 0
for i in range(len(x)):
    y = predict(network, x[i])
    p= np.argmax(y) # 揣 y 內底上大, 也都是機率上大--ê
    if p == t[i]:
        accuracy_cnt += 1

print("Accuracy:" + str(float(accuracy_cnt) / len(x)))
                                                                                                                                                              44,1         底端

get_data() 佇前一篇介紹, 就是去 kā MNIST 捎--入來.

init_network() 就是 kā 咱事先做好个神經網路, 囥佇 ch03/sample_weight.pkl 掠轉來.

predict() 伊个樣都和咱佇 Python 實作 3 棧 ê 神經網路 ê 樣欲相sia̋ng 阿相 siâng. 你看伊嘛是三棧 ê 網路 毋過, 伊 ê 輸入有 784 ê  神經元, 輸出有 10 ê 神經元. 中方藏兩棧, 這隱藏 ê 頭一棧是  50 个神經元, 第二棧是 100 个神經元.

for i in range(len(x)):
    y = predict(network, x[i])
    p= np.argmax(y) # 揣 y 內底上大, 也都是機率上大--ê
    if p == t[i]:
        accuracy_cnt += 1

這个 for loop, kā 測試 ê 資料用  predict() 來臆, 咱个 10 ê 輸出神經元, 對應到 0~9  十 ê 數字, 佗一个 ê 機率上大, 就是伊--阿. 才閣和答案 t[i] 比看著抑是毋著

這是佇我的電腦ê運行結果:

$ python3 neuralnet_mnist.py 
Accuracy:0.9352

佮書上仝款. 0.9352 就是正確率 93.52%.

電腦就是電腦, 訓練煞就袂改變. 咱人有可能彼工心情無好結果會變無仝.

你看, 生做攏仝款 ê 神經元, 經過訓練, 就會認 0~9 ê 圖片. 訓練是改變啥物咧? 就是神經網路 ê  權重 W, 佇遮是 W1, W2, W3. 欲按怎調整 W1, W2, W3? 這就是神經網路 ê 手路, 咱就愛繼續看落去!

註1: 定定聽序大人講 "錢水活", 表示華語講个 "金流很大". "水" 這个字佇台語, 本底就有 "流" ê 意思. 和英文 ê flow/stream, ê 意思嘛真合. 當然, 你欲添一 ê "流" 也是會使啦!

←前一篇     後一篇→

2018年1月10日 星期三

Python Deep Learning 深學筆記 - MNIST 資料集

←前一篇     後一篇→

驗證佮開發仝款重要
咱學一項物件,  無論你是學趣味--ê 抑是欲賺食, 總是愛有法度驗證你學ê物件有路用--無. 若學規半晡 , 紲干焦會當家己歕雞胿講家己偌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ā 你的電腦連出去網路)

git clone https://github.com/oreilly-japan/deep-learning-from-scratch

才閣去予伊 ê mnist_show.py 起行:

cd deep-learning-from-scratch/ch03
python3 mnist_show.py

你就會看著:

我佇 Ubuntu 17.10 看著 ê 這个 "5", 是足細足細, 有用貓鼠 kā 伊小可搝較大咧.
你若是去伊 ê dataset/ 目錄, 你會看著加 4 ê gz 檔:

$ ls deep-learning-from-scratch/dataset/
__init__.py    lena.png   mnist.py     t10k-images-idx3-ubyte.gz  train-images-idx3-ubyte.gz
lena_gray.png  mnist.pkl  __pycache__  t10k-labels-idx1-ubyte.gz  train-labels-idx1-ubyte.gz

彼就是去網路頂搝--落來--ê.

書頂面有解說講 mnist.py 是按怎寫--ê. 若有興趣會當去讀. 毋過, 我想重點是 欲按怎使用 load_mnist() 這个寫好 ê 函式, 咱測試會使用著, 佇 mnist_show.py 咱就有看著伊的使用是真簡單, 這是伊的原始碼:

# coding: utf-8
import sys, os
sys.path.append(os.pardir)  # 設定搜揣路草,予咱揣會著 dataset
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)  # kā img 成做 28*28 ê 陣列, 為著欲顯--出來
print(img.shape)  # (28, 28)

img_show(img)

咱小來解說這个程式个內容:

sys.path.append(os.pardir)

是共你的頂一棧目錄加入去 Module ê 搜揣路草. 咱用 cd deep-learning-from-scratch/ch03 來去予 python3 mnist_show.py 起行deep-learning-from-scratch/ch03/ 就是現此時/目前目錄(current directorypython 程式本身起行 ê 路徑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() 是真重要 ê 函式, 愛共伊小了解一个:

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

咱看伊會落尾會擲轉來 (x_train, t_train), (x_test, t_test).

神經網路有兩的崁站: 訓練 (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 爾爾. 這也是愛看佗一種表示較合用.

這寡選項是和圖形處理按怎做較好有關係, 咱這馬先照咧做.


我 ê mnist_show-mine.py

為著予家己較熟手一咧, 嘛閣較了解 load_mnist(), 我小可改 mnist_show(), 予伊印較濟圖出來, 程式囥佇遮: mnist_show-mine.py:

簡單是kā 28x28 ê 圖, 佇 y 方向一直疊--起哩. 這當然是愛小可了解圖佇電腦--裡, 陣列是按怎表示, 才予咱人看有?
你看, 平平是 1, 有向前小可仔斜斜(tshiâ), 嘛有向後略略仔䖙䖙, 有个一屑屑仔鬚鬚, 抑是彎彎. 這對咱人來講無問題, 攏是 1. 毋過對機器來講, 就是大問題.

2018年1月9日 星期二

Android 手機仔安裝 Oruxmaps

若是頭一擺來我, 建議你先來遮踏話頭.


定定peh山个人, 攏會安裝 Oruxmaps (台羅: Óo-luk-mè)這个軟體.

伊是一種地圖軟體, 伊使用 ê 地圖是一種離線地圖. 和 Google 地圖無仝, Google 地圖是囥雲頂, 行到佗, 才隨時uì Google server 搝落來. 所以, 你个手機隨時攏愛黏佇網路!

離線地圖毋免. 伊是全部囥佇你个手機裡. 就算你入去飛航模式, 嘛是會用得!

伊是免費, 自由ê軟體. 毋過, 毋知為啥乜, 你無法度佇咧 Android 頂仔 ê Google Play免費安裝, 看伊的網頁, 干焦是違反 Google 付費 ê 政策. 毋過, 咱猶原會使 uì 伊的網頁直接安裝:

Ourmaps 安裝

佇手機頂, 用 Google Chrome 開 Ourmaps ê 官方網站: http://www.oruxmaps.com/, 你會看著幾落个版本, 現此時我看著个是 7.2.1, 揤:


伊就會自動共伊 ê APK 檔搝--落來, 順徙問你欲安裝--無? 你應好就好阿

安裝臺灣 peh 山地圖

拍開 Taiwan TOPO 網頁, kā 網頁徙到到這个所在:

OruxMaps OruxMaps 自動安裝


我 ê 電信商是中華電信, 所以直接點 Map, Style 伊就會自動安裝.
我 ê 方案是食甲飽, 所以愛去 OruxMaps 內个 "整體設定->地圖->Wifi下載" 共伊禁khiah.

Map 安裝

你點 Map 了後, 看來袂振袂動, 毋通閣亂揤, 莫離開 OruxMaps, 伊這馬當佇 kā 地圖搝落來. 你若用指頭仔, uì 螢幕上頂懸, 向下跤捋落來, 會看著伊當佇 "下載中", 耐心等伊結束. 若是離開 OruxMaps, 安裝就斷--去囉!

Style 安裝

kā Map 仝款, 毋過siű--一个就結束阿.

DEM 安裝

這就愛用手動阿.
咱先共伊搝落來囥佇手機阿裡, 才閣kā伊 kok-pì (Copy) 入去 Oruxmap 內底:

若是 Chrome, 你就揤落載(下載), 伊就會儉去手機裡
揣一个檔案管理軟體, 若是無, 去 Play Store 起 "file manager", 就會出現幾落--ê, 揀一个來用, 我是用 ASUS ZenUI ê 檔案管理.

拍開 ZenUI 檔案管理軟體, 你會看著 moi-hgt-v3.zip. 佇 moi-hgt-v3.zip 點兩个, 閣點 "解壓縮", 伊就佇現此時 ê 目錄解--開, 伊个路草是 sdcard>Downoad>moi-hgt-v3/.


入去 sdcard>Downoad>moi-hgt-v3/, kā 全部 ê hgt 檔選--起來, 才閣佇正爿頂面揤 "移動至" 或 "複製到", 才閣揤 "內建儲存空間->oruxmaps->dem", 落尾揤 "確定" 就好阿!


看地圖有安裝好勢--無?

佇 "切換地圖->OFFLINE" 你會看著 MOI_OSM_TAIWAN_TOPO_RUDY(MAPSFORE), 若無看著, 小揤頂懸兩个箭頭佇圓箍仔內底 ê 更 (Refresh), 若看會著, 就揤一个換--過去.




閣紲落來換 style (華語: 風格), 這佇我的安裝, 和影片無仝, 是愛揤正手頂仔彼三條線 ê 細圖, 才閣揤 Mapfsforge風主題, MOI_OSM:

另外, 嘛是會使uì "地圖調整->Mapsforge風格主題" 來改!

你會使設定欲看偌濟物件: "地圖調整->Mapsforge風格主題->微調Mapsforge主題", kā你想欲看 ê 物件勾起來.

若是想欲看山 ê 影跡, 就是去 "地圖設定->Mapforge設定->增加山坡陰影" 共伊勾起來!

按呢生就全部結束阿, 落尾, 建議是共 cache 摒挕捒 "地圖設定->重建地圖快取"

.

安裝日本地圖

有時欲出國, 若有通安裝離線地圖, 嘛袂䆀.
用 Google chrome 開 https://www.openandromaps.org, 入去了後, 揤 Map Downloads-> Asia, MiddleEast, 共網頁趨落去下面, 有一个表, 有真濟國家.


揣著日本, 揤頭前彼个 "+", 就有真濟安裝方法予你揀:



我揀 Android on OruxMaps, 伊就自動開始安裝阿! 仝款, 愛有耐心小等一个, 會當用指頭仔 uì 螢幕頂捋落來, 你會看著掠地圖 ê 進度條:
等到結束, 就完成阿, 你會使去 "切換地圖" 看日本地圖 JAPAN_ML(MAPFORGE):


這馬, 你會使揀伊來看日本地圖, 你會予伊顯示日文/英文, 干焦揤 "地圖調整->Mapforge地圖語言"

2018年1月1日 星期一

Python Deep Learning 深學筆記 - 輸出棧 ê 一寡討論



請共教育部閩南語常用辭典開--咧,隨時會當查。

輸出棧 ê 設計和你欲解決 ê 問題款有關係

神經網路想欲解決ê問題普通分做分類問題迴歸(台羅:huê-kui, 英文: Regression)問題.
普通欲解決迴歸問題使用恆等函數, 分類問題用 softmax (Sòo-hu-mak-su)函數.

分類問題是欲kā輸入 ê 資料分開, 比如講, 一張人相是查埔抑是查某--ê?

回歸問題欲解決 ê 問題, 伊的數字是相連紲--ê, 比如講, 看相片來臆看覓彼个人是幾公斤

恆等函數 (identity function, 台羅:hîng-tíng hâm-sòo) 是啥乜攏無做, 原汁原味, kā 輸入直接擲出來. softmax 函數需要較濟討論

Softmax 函數 ê 討論

咱佇知影 softmax ê 數學式是:

{\displaystyle f(x)={\frac {1}{1+e^{-x}}}}

這是穩藏棧神經元个使用. 若是佇上尾輸出, 對其中一个神經元, 咱會kā改做:

y(k) = exp(a[k]))/sum(exp(a[0]), exp(a[2]), ..., exp(a[n-1]))
      where k: 0 <= k <= n


a[0]...a[n-1] 表示所有輸出神經元中方 ê 一个.



咱真簡單就看會出來, 若是kā y(0)...y(n-1) 攏 kā 伊加起來, 伊就是 1. 所致, 逐个輸出神經元就親像一个事件發生 ê 機率

佇電腦頂仔寫 Softmax 函數 ê 奇巧

softmax 函數理論真簡單, 毋過佇電腦頂運行有伊的限制. 這時, 你就會怨嘆數學無學予好. 因為有一寡電腦問題, 毋是用電腦智識會當解決--ê.

當然, 有數學家 ê 研究, 咱干焦利用 in ê 成果就好!

數學頂 ê 指數(kí-sòo) 運算, 磕袂著就會有位數 (uī-sòo) --出來 ê 問題 (overflow). 因為數學是理論, 所以有無限大  ê空間. 毋過, 電腦會當處理 ê 數字, 是有限--ê.

咱會使參考網路上這篇:
事實上, 原作者寫了真好, 挺好參考 3.5.2:

建議逐个去買來看.

佇遮我就無閣介紹數學推算 ê 過程, 干焦介紹伊个 Python 寫法:

def softmax(a):
    c = np.max(a)
    exp_a = np.exp(a - c)
    sum_exp_a = np.sum(exp_a)
    y = exp_a/sum_exp_a

    return y


Python Deep Learning 深學筆記 - Python 實作 3 棧 ê 神經網路



請共教育部閩南語常用辭典開--咧,隨時會當查。
若是英文, 我會用斜體, 來表示


完整 ê 網路數學式

咱佇前一篇知影: 神經網路 ê 訊息, 是一棧一棧傳落去. 頂一棧和下一棧中方, 是 Matrix (台羅:
Mé-tshui ) ê Dot (台羅: tot) 運算. 佇遐, 為著予 dot ê 觀念會當清楚浮--起來, 我有減省 bias (台羅:Pài-o-sù)戛火函式, 這馬愛共伊添--轉去. 咱這馬看完整ê圖:



佇逐个神經元輸出ê時, 愛先經過戛火函式. 逐擺行到下一棧, 除了 Matrix ê dot 運算,閣有一个 bias (紅色) 愛添落. 這馬 0.5, -0.1, 0.2 只是用來做例表示伊是常數, 毋是一定是按呢!

較愛注意个是: 上尾欲輸出 ê 時, 彼咧戛火函式有可能和進前無仝. 這是因為欲用佗一个戛火函式, 愛看你想欲解決啥乜問題. 這馬我閣無啥乜經驗, 咱先 kā 這做法囥佇心肝頭, 後擺才閣沓沓仔來了解.

咱用前一篇學著 ê dot 表示法來表示這張圖:

X ● W1 + B1 = A1
h(A1) = Z1

Z1 ● W2 + B2 = A2
h(A2) = Z2

Z2 ● W3 + B3 = A3
σ(A3) = Y

其實, 就是重複三擺 dot, 加 bias, 閣用戛火函式處理這咧過程, 咱這馬會使開始寫阿!


頭一版 ê Python 實作

若是照咱頂仔 ê 算式, 就是真直覺:

A1 = np.dot(X, W1) + B1
Z1 = sigmoid(A1)

A2 = np.dot(Z1, W2) + B2
Z2 = sigmoid(A2)

A3 = np.dot(Z2, W3) + B3
y = identity_function(A3)

其中,  sigmoid() 和 identity_function() 是戛火函式. 紲--落來, 就是賰定義 W1, W2, W3 這三个權重, B1, B2, B3 這三个 Pài-o-sù 就好阿!

咱較佮意 kā 權重和 Pái-o-sù 獨立出來佇一開始都寫好, 囥佇 init 函式內底, 下跤是完整 ê 例: network.py, 和原文 ê 仝款:


import numpy as np

def sigmoid(x):
    return 1 / ( 1 + np.exp(-x))

def identity_function(x):
    return x


def init_network():
    network = {}
    network[ 'W1' ] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
    network[ 'B1' ] = np.array([0.1, 0.2, 0.3])
    network[ 'W2' ] = np.array([[0.1, 0.4], [0.2, 0.5] , [0.3,  0.6]])
    network[ 'B2' ] = np.array([0.1, 0.2])
    network[ 'W3' ] = np.array([[0.1, 0.3], [0.2, 0.4]])
    network[ 'B3' ] = np.array([0.1, 0.2])

    return network

def forward(network, x):
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    B1, B2, B3 = network['B1'], network['B2'], network['B3']

    A1 = np.dot(x, W1) + B1
    Z1 = sigmoid(A1)

    A2 = np.dot(Z1, W2) + B2
    Z2 = sigmoid(A2)

    A3 = np.dot(Z2, W3) + B3
    y = identity_function(A3)

    return y

network = init_network()
x = np.array([1.0, 0.5])
y = forward(network, x)
print(y)

forward() 這个函式名, 是講這種訊號行徙ê方式, 是向前(ǹg-tsîng). 日後, 咱會閣學著向後(ǹg-āu).

佇遮, 咱使用著 Python ê 字典 (dictionary), 咱會使去參考線頂个 Python Doc. 若有需要, 我才閣另外寫一篇來紹介.

network() 這个函式名, 伊內底 ê 數字, 就是咱現此時个神經網路!

小結

到今(kàu-tann), 咱uì一个簡單 ê 三棧神經網路, 咱會當知影:

  • 伊是一棧一棧傳訊號(sìn-hō)--ê. uì頂一棧到下一棧是 Matrix ê dot 運算
  • 咱關心个是輸入和輸出, 中方 ê 棧, 是隱藏 ê 棧
  • 利用 Python ê NumPy, 欲寫出神經網路 ê 向前處理 (forward process), 毋但看起來屧貼, 好寫好理解. 伊運行起來嘛真好效率. 這是因為伊佇處理陣列 ê 運算真!



佇 Linux 來看GPX 檔案

最近定定有戶外活動。使用𤆬路機 (GPS) 來記錄行過的路線。普通我記錄路線,攏是用手機仔抑是專門个𤆬路機,罕得用電腦來看。 毋過,"仙人拍鼓有時錯,跤步踏差啥人無"。有一擺我無細膩,袂記得共一擺活動的路線收煞起來,閣直接開始記錄下一擺的活動,按呢共幾落...