2020年2月17日 星期一

佇 Linux 來看GPX 檔案

最近定定有戶外活動。使用𤆬路機 (GPS) 來記錄行過的路線。普通我記錄路線,攏是用手機仔抑是專門个𤆬路機,罕得用電腦來看。
毋過,"仙人拍鼓有時錯,跤步踏差啥人無"。有一擺我無細膩,袂記得共一擺活動的路線收煞起來,閣直接開始記錄下一擺的活動,按呢共幾落擺活動濫濫做伙,按呢記錄都亂去矣。這寡記錄閣攏真寶貴,毋甘放捒,欲按怎咧? 只好用電腦來試看有法度來救無?

啥物是 GPX 擋案?

欲救進前,愛先熟似一个物件? 電子用品記錄的路線,上尾是用啥乜形式儉起來? 伊上尾是囥佇機器內面,檔尾是 GPX 形式的檔案。GPX 就是專工來記錄路線標準。仝一个 GPX 檔案,毋管啥乜機器,抑是程式來讀,攏會得著仝款的路線。所致欲處理這个問題,愛先揣你機器的 GPX 囥佇佗位,欲按怎共伊 kok-pì 到電腦內。

我是用 Android 手機頂仔的 Oruxmaps 程式,伊的 GPX 是囥佇手機仔的目錄樹 internal storage/oruxmaps/tracklogs 內底,用 USB 線接好電腦佮手機,共伊 kok-pì  就好矣。

欲用啥物 È-phù 咧?

Linux 頂有啥乜 È-phù (App) 會當用? 一開始我嘛毋知,就愛問 Google 看覓。揣著這篇文章  10 Best Free Linux GPS Tools,就揀頭名  Vikings 來試看。


安裝 Vikings

佇 Linux/Ubuntu, 安裝是桌頂拈柑的代誌:

$ sudo apt install viking

使用

拍開會看著這个畫面:


共 GPX 檔案讀入來

用貓鼠去揤 F 檔案 -> O 開啟 (Ctrl-O),去 Linux 檔案樹拍開你的 GPX 檔

愛注意:

  •  F 檔案 頭前的英文字, 是予人有另一个選擇去用齒盤(Keyboard), 就是用 Alt-F 來代替貓鼠揤檔案, 我照伊顯示的寫
  • 因為這个 的中文翻譯毋是蓋齊勻,所意有當時你會看著內面是英文,有當時是英文佮中文濫做伙,佇這个時陣我是照抄。
  • -> 的意思是連紲的動作, 就是先用貓鼠的倒鈕揤 F 檔案,等看著 才閣揤 O 開啟 (Ctrl-O)
今伊讀入來的畫面:

你會看著三簇離真開,這是三个無仝的活動路線,咱毋知這是佇佗位,愛共地圖鋪起,用貓鼠倒鈕點 Default Map,閣揤正鈕->屬性(P)->地圖類別,會出現濟濟地圖,



我直接揀 OpenStreetMap (Mapnik)。按呢地圖就鋪起lih矣:



共 GPX 剁做一橛一橛

你愛先去點倒爿的路線,伊會顯示 "軌跡",閣點 "軌跡",下跤就是欲處理的 GPX。我想欲共伊分開,就愛先對 T 工具 -> Splitter (Shift-Ctrl-L) 起動剁線功能,才用貓鼠去點欲剁落去的點:

你會看著加出 #2, #3 的路線,這就是切好的路線,你會使佇後壁的角仔格共勾仔禁抑是開,來看是毋是你欲挃个。若是確定彼是你欲挃个,就是彼个路線揤
鳥鼠正鈕->Export Tracks as GPX

 按呢生就共這個路線剁好矣。

上尾ê修正

路線本底的名嘛是記錄佇 gpx 內面,你直接用鳥鼠倒紐揤落去,若是伊反色,就會使改名。
閣有幾个所在愛閣si-a-gè 一个,攏是佇揤路線->鳥鼠正鈕->屬性 中:
  • Properties 頁: Description 的開始時間抑是結束時間可能毋著:你愛先用其它頁的資料手動改一咧,像我是用高度-距離彼頁的時間來改。你看佗一頁的資料先簡單就先去參考。
  • 路線有加的點: 有時間你切的所在無準,可能會加幾點,這時愛用
      T 工具->Edit Track Point (Shift-Ctrl-K)
    來編輯,點彼點,浮出一個窗仔,點刪除(D)就好


  

2020年1月6日 星期一

快速共地址輸入 Garmin fēnix 6 的方法

Garmin fēnix 6 Pro 有支援𤆬路 (華路: 導航) 功能。毋過, 伊的輸入功能真兩光。若是等伊手錶的方法來輸入甲好, 喙鬚就拍結矣!

我無意中看著這个影片, 是先利用手機仔來輸入地址, 才送過手錶仔去:

Garmin Fenix 5x Entering a destination or address the easy way - Sendpoints App

fēnix 5 會使, fēnix 6 應該嘛會用得, 就來試看覓!

其實, 完全照伊的步序做就會成功。

安 Sendpoints

這真簡單, 就是用手機的 Garmin IQ 去揣 Sendpoints 來安裝, 並且共伊安起lih手錶內面

這有 Sendpoints 這個應用程式的介紹:

https://apps.garmin.com/zh-TW/apps/93712e86-cec9-48c3-b18e-2a87aefead91

拍開 http://www.sendpoints.us/


這是 sendpoints 的服務網站, 真清爽的畫面, 就一逝予你起字的所在爾爾。
一開始看著網路地址落尾的 us, 我閣驚講是毋是干焦美國才會使用? 咱中文佮日文是毋是無法度用?
後來我試用中文發現無問題。
日本我就先 Google 一个 "品川王子大飯店", 揣著伊的英文/佮日文羅馬字是 "Shinagawa Prince Hotel", 伊真緊就揣著, 會跳出四個號碼, 你愛共伊記起來。
後來我試日文假名嘛無問題.

共位置儉佇手錶

揤正爿頂懸的 4 號鈕 (活動鈕),一直試 2 (UP, 頂) 抑是 3 號鈕(DOWN, 下) 乎伊來到 Sendpoints, 你會看著 HASH 畫面, 共四個號碼起入去, 伊就會囥佇 "已儲存位置/Saved Location)


檢查


仝款揤正爿頂懸的 4 號鈕 (活動鈕),一直試 2 (UP, 頂) 抑是 3 號鈕(DOWN, 下) 乎伊來到 "導航/Navigation", 入去內面揣 "已儲存位置/Saved Location)", 你應該會看著一個位置是 "品川王子大飯店",閣入去看地圖, 有看著:


就代表伊的位有準,也代表前一篇安裝的 OpenStreetMap 的日本地圖有準!

後記

去日本實驗的結果, 這地圖是準个。用佇行路騎車來𤆬路,好用!




2020年1月3日 星期五

Garmin fēnix 6 安 OpenStreetMap 的地圖

最近買一支 Garmin fēnix 6 Pro Solar 的手錶。伊有濟濟功能,佇健身,野外活動親像peh山,騎孔明車,走標,甚至趨雪真好用。

伊已經有先囥臺灣地圖(是 TOPO Garmin Cycling,  有修改過, 專工予自輪車用个), 世界基本地圖 (Worldwid_DCW), 佮世界趨雪場的地圖 (Garmin Ski Map)。

其中, TOPO 佇臺灣上出名就是 "魯地圖 (MOI.OSM - Taiwan TOPO)"  。這是台灣一群專業閣熱心人士來維護的開放地圖,用佇peh山真方便。

魯地圖

魯地圖, 會號這个名是伊的頭人維護者的英文名 Rudy。因為 Ru 和 "魯" 音相倚!

華語是 ㄌㄨˇ, 台語是念 lóo。

 "魯" 這字其實佇華語真罕得用, 除了書有讀著古早孔子公是 "魯國人"。這馬閣流行 "魯蛇", 是英文 Loser 的音譯!

毋過,臺灣人對這字會感覺真親切,因為伊定定予人借來做台語 "滷肉/滷卵" 的替用字成做 "魯肉/魯蛋"。而且,lóo 這个音定定出現: 佇細漢定定予爸母罵 "我會予你lóo--死",抑是罵人 "你真lóo" 呢! 佇遮這个lóo, 是另外一字 "惱"!

若是欲予音較倚英文音,應該是 "Lu" 較成。我建議台語翻做 "旅()地圖"。音義攏峇!


開放地圖/OpenStreetMap

世界閣有一个足大的開放計劃,號作 開放地圖/OpenStreetMap,伊是眾人鬥陣合作來起造的地圖。目前看起來已經袂輸一寡專門佇作地圖的公司。目前真濟專業地圖攏是用伊做底緻,閣共家己較專業的部份添起哩。旅地圖中方  (MOI.OSM - Taiwan TOPO)" 的 OSM, 就是 OpenStreeMap 的簡單寫!

共 OpenStreetMap 囥入去 Garmin 機器

Garmin 本身有伊家己的地圖。毋過彼愛開錢去買。
這馬嘛有網站佇共 OSM 地圖轉去予 Garmin 機器使用。我的 Garmin fenix 6 pro solar  本身有支援地圖。 我來試看覓添入日本地圖會用得袂?

參考:  Free maps for Garmin brand GPS devices,這馬伊改去 BBBike


點入去頂仔的網站,你會看著一个世界地圖,有一格一格。這一格就是上細个單位。今咱想欲日本的地圖:



你會使直接揤倒手頂懸,共伊放大,徙振動,才來揀你欲挃的彼格。毋過伊有方便你較緊揣著你欲挃的地圖。比如講,日本, 你就用 "Choose a predefined country:" "Asia" 挩--落來,直接揀 "Japan":

伊就會自動共佮日本的地圖格仔攏揀起來,我欲添掠外的 title,就共 "Perhaps you'd like to add some additional tiles" 撓勾(華語: 打勾),揤 "Download map now!",伊就會進入一个畫面予你去捎地圖轉來:

愛注意: 有時陣伊閣會愛你起--入去 (key in) 你的電子批信箱 (email),彼有可能是你揀个地區最近無人來搝--落(khiú--loh, Download)。譬如講,規日本的地圖傷大,無法度齊囥入去你的機器,你干焦欲去東京附近。你就干焦揀彼幾个,這伊閣愛時間做,做好才閣寄批予你。

伊有幾落款地圖,看你是用窗仔門(Windows), Mac, 抑是 Linux。無就是直接會使囥佇 GPS SD card 的 osm_generic_tiles.zip。這擺,我是直接用 osm_generic_tiles.zip。

囥入去你的 Garmin 機器

共  osm_generic_tiles.zip 敨--開,是孤一个檔案 gmapsupp.img,我共伊改名做 japan.img,共我的 Fenix 6 用伊的 USB 線接去電腦,會看著一个路草: 



點入去 GARMIN 內面,共 japan.img 貼落。等好勢,揤


共這个機器退出,才共 USB 線拔出來。等待手錶共地圖讀入來。

檢查地圖

手錶拍開,入去 "地圖",揤 "地圖設定" -> "地圖" --> "設定地圖",內底有幾落个地圖,確定新个地圖有起來 (active),若無就揤 START 共伊起動。


紲落來,共地圖徙振動,到日本看覓仔有物件無:


若有看著,應該就會用得。有好用無好用,就愛到日本現場看覓才知影囉!

落尾

這个方法,我是佇 Garmin Fenix 6  頂懸試。毋過,有支援地圖的 Garmin 機器真濟攏會使。你會使先 Google 看覓,先看伊有支援無。因為世界各國的地圖攏有,所以真方便。

人講食果子拜樹頭。咱用這款 Open source 予咱真濟利便。若是有閒有法度,嘛是會使共 in 鬥相共,親像捐錢,抑是共鬥編地圖,共佗位毋著報予 in 知,攏是真好个方式!

2019年12月2日 星期一

Linux 螢幕校正

最近佇學攝影 (liap-iánn). 我攏佇電腦整理相片。

毋過, 定定佇我的 Laptop 頂仔看起來色緻閣會算正常的相片,擲入去 LINE,佇手機仔內面看起來色緻煞烏趖趖。有時會予老師罵講這相片 "曝光(pha̍k-kng)不足" 也敢交出來, 按呢實在是真冤枉!

後來,攝影老師借我一隻 x-rite i1 Display Pro專業色彩校正機器乎我試看佇 Linux 按怎做。

我記得較早佇 Linux 頂做色彩校正足麻煩的。毋過這擺發現伊加真簡單。

參考這篇文章: How to color calibrate your monitor in Linux, 照步來就 kha̋n-jó 起來。毋過,有一寡鋩鋩角角嘛是愛小注意一个。這篇文章有介紹一寡色彩的基礎智識,若有閒嘛是會使共伊斟酌看,順紲練英文。我佇遮干焦共我佇 Ubuntu Linux 頂懸的實驗,一步一步共伊寫落來,後擺若是有人欲作,就照起工來行就會使。


環境佮器材

我實驗的環境是 Ubuntu Linux 19.10 (Eoan Ermine)。
x-rite i1 Display Pro, PCHome 有佇賣

安裝 DisplayCal

用 Google 抑是去伊官方網站去掠: 揤落你會看著這個畫面:


揤綠晚中方 Get DisplayCAL,伊會走去

你會使看著,伊支援真濟 OS,咱就揀 Linux:



揣 Ubuntu 19.10 (Eoan) 的 x86_64, 共伊搝落來。

紲落來安裝,若是順利,你干焦佇 Terminal 落:

# dpkg -i displaycal_3.8.8.1-1_amd64.deb

就結束。若是拄著錯誤,親像

dpkg: 因相依問題,無法設定 displaycal:
 displaycal 相依於 python-wxgtk3.0 (>= 3.0) | python-wxgtk2.8 (>= 2.8.11)﹔然而:
  套件 python-wxgtk3.0 未安裝。
  套件 python-wxgtk2.8 未安裝。
 displaycal 相依於 python-numpy (>= 1.0)﹔然而:
  套件 python-numpy 未安裝。
 displaycal 相依於 python-psutil﹔然而:
  套件 python-psutil 未安裝。
 displaycal 相依於 libsdl2-mixer-2.0-0﹔然而:
  套件 libsdl2-mixer-2.0-0 未安裝。

你就愛事先共這寡欠的包袱仔攏安起哩:

sudo apt install -f python-wxgtk3.0  python-numpy python-psutil libsdl2-mixer-2.0-0
sudo apt --fix-broken install

這 sudo apt --fix-broken install 是因為閣有依賴的包袱仔 (dependent package) 的問題,叫 apt 去共伊修理予好。按呢生,你閣來行 dpkg -i displaycal_3.8.8.1-1_amd64.deb 應該都無問題囉。

開始校正 - 設定


  1. 先共 x-lite i1 Display Pro 的 USB 頭插入去電腦的 USB 空
  2. 拍開 displaycal,看你欲用命令 displaycal 抑是對 GUI 開攏好。若是你是頭一擺拍開, 伊會自動去 ArgyllCMS 網站去掠一寡需要的資料轉來,伊嘛認得你使用的彩色校正器是佗一款,自動去掠伊的需要的物件來。若是第二擺以後,就直接走去 3
  3. 你會看著一个金光閃閃的起磅畫面,落尾停佇遮:





  • Settings 有濟濟無仝的設定,普通 Laptop 是使用 Gamma 2.2,你會使用 Default (Gama 2.2) 抑是 Laptop (Gamma 2.2)。我是揀 Laptop。
  • Display 伊會自動揣著你的螢幕是佗一款。若是你有接兩台,你愛揀你欲調整佗一台。
  • Instrument 會顯示你的校正器,像我用的 i1 DisplayPro.
  • Mode 因為我是 LCD 螢幕,所以改 LCD (generic)。


紲落來切到 Calibration 彼搭 (Tab)



Calibration settings 起勾 interactive display adjustment
Calibration speed 會使調整速度,看你有趕時間無? 當然愈慢是愈準。

按呢都差不多會用來開始

校正

先共色彩校正器 i1 DisplayPro 的蓋拍開,掛佇螢幕,予伊對頂懸垂落來,親像按呢:


共 DisplayCal 上下跤的 Calibrate & profile 揤落去, 伊會出現一个四角型,你會使調整伊的位置佮大細。上好是踮中方,揤 start measurement:



你會看著一个窗仔號做 Interactive display adjustment,中方會閃幾落擺無烏色,白色,鳥鼠仔色的四角,等到 Interactive display adjustmentStart measurement 會使揤,就共伊揤落去:


過無偌久,紅色, 綠色, 藍色的長線就捅出來。in 的長度無仝。若是理想,愛調整到中方三角型的所在。毋過,目前我閣無看著伊有法度雕到遐。有可能我用的螢幕攏是俗物。

而且,愛注意: 你螢幕的光度,會影響著這個部份的值。像我共伊揤較光抑是較暗,伊紅綠藍的長度就無仝, 你上好愛固定伊的光度。



不管按怎等,伊攏袂自動停,所以等一段時間,揤 Stop measurement, 閣揤 Countinue
,伊就開始紲落去..




這時間閣愛真久...., 等到結束了後, 會出現:


你會使看覓伊的內容, 去勾 Show profile information:


倒手爿彼張圖,是顯示你的顯示器偌有才調: 若是彩色的範圍愈大愈倚外面彼輾白色的框,表示你的螢幕有法度表現的色彩較濟。
若是無問題,就揤 Install Profile 來共伊安入去電腦內面, 出現這:

揤 "匯入",


按呢揤 OK 就結束啊!

佇 GNOME 中方檢查看覓

你若是用 GNOME 3 / GNOME SHELL, 開正手爿頂懸的設定值 --> 裝置 --> 色彩:



會看著出現一個新的,有日期的 Profile,你會使切過覓佮舊的敢有啥物差別無?


2019年8月25日 星期日

Ubuntu 變啞口 (Audio has dummy output)

uì升級到 Ubuntu 19.04, Disco Dingo, 我的電腦忽然間變啞口. 雖然你會當佇正手頂懸看著喇叭的音量符號, 毋過無聲. 你入去 設定->音效 裏去看伊的輸出裝置, 干焦會看著 Dummy Output. 我小搜揣網路, 有看著這个討論綰:

Fix No Sound (Dummy Output) Issue In Ubuntu With SND HDA Intel

一開始照伊講个步序行, 攏無法度解決我的問題:

檢查

1 先落 lsmod|grep snd_hda_intel 來檢查有這寡 Má-tsìo (module) 無?

結果是有
# lsmod|grep snd_hda_intel
snd_hda_intel          40960  4
snd_hda_codec         131072  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_idt
snd_hda_core           86016  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_idt
snd_pcm               102400  5 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
snd                    81920  18 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_timer,snd_pcm,snd_hda_codec_idt,snd_rawmidi

2 落 檢查 Audio 晶片的資訊:
確定是 Intel 晶片, 是用 snd_hda_intel 無毋著。精差彼版本無仝, 我的有較新淡薄仔:

# lspci -nnk | grep -A2 Audio
00:1b.0 Audio device [0403]: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller [8086:1e20] (rev 04)
 Subsystem: Dell 7 Series/C216 Chipset Family High Definition Audio Controller [1028:0534]
 Kernel driver in use: snd_hda_intel
 Kernel modules: snd_hda_intel

試伊的方法

伊講佇 /etc/modprobe.d/alsa-base.conf 尾溜添一逝: options snd-hda-intel model=auto, 我就用 root 身份, 用文字編輯器 vim (抑是任何你慣勢用个) 共伊添入去. 當然用伊的方法嘛會用得, 這是仝款的意思


# echo "options snd-hda-intel model=generic" | sudo tee -a /etc/modprobe.d/alsa-base.conf

紲落來重開 (reboot).

毋過按呢無較縒

閣共 model 改做 auto

# echo "options snd-hda-intel model=auto" | sudo tee -a /etc/modprobe.d/alsa-base.conf

嘛無路用。看來是無步矣, 欲按怎呢?


上尾的絕招

當佇頭𢯾佇燒的時陣,佇下面的討論粽捾(discuss thread)巡巡咧, 看著有人講, 愛落:

# pulseaudio -k && sudo alsa force-reload

就免重開機。

我就共伊試看覓, 結果按呢生聲音就走出來矣, 彼 輸出裝置 就成做 喇叭 - 內部音效 矣 。

所以,這的問題對我來講, 解決方式就是修改, alsa-base.conf, 重開機, 閣用這個絕招.

愛特別注意: pulseausio -k 干焦會當佇普通使用者 (normal user), 袂使佇 root  身份.


2019年7月23日 星期二

Google Calendar 定定出現歹物仔

最近, 我的 Google Calendar 定定出現莫名其妙的 "活動", 點入去親像按呢:



這文字看無, 共 "Вам поступил перевод " kok-pì (Copy) 起來, 貼入去 Google 翻譯,知影伊是露西阿 (Russia) 文。

當當我共伊揭挕捒,隔轉工伊閣出現,有時陣一出現就是規個月三十工滿滿,真齷齪,刣袂離。就愛想一个辦法來解決。

原來這活動是透過 Gmail 添入來个。Gmail 有一个功能是: 若有人寄邀請予你,伊就會自動添一个活動去 Google 曆日。就算我已經共彼張批擲入去糞埽桶(Trash) 抑是設做糞埽批(垃圾郵件) 嘛無路用。

後來揣著方法是按呢,這干焦會使踮桌面版的 Google 曆日設,袂使佇手機版的 Ep (App)
  1. 揤正手頂懸,六齒的 Gí-a icon,出現 Mé-nìu (Menu) 了後,入去 一般設定 這个 Thé-phù (Tab)
  2. "自動新增邀請",共伊揤落,改做 "不, 只顯示我已經回覆的邀請"
  3. 切過去 "畫面顯示設定",揣 "顯示已拒絕的活動",佇頭前的四角框,若是有一个勾勾仔,就共伊揤落去,予勾仔無--去。
毋過,我感覺上好的辦法是: 直接佇 Gmail ,設定 --> 篩選器和封鎖的地址 中方,共彼个電批 (Email) 的地址封鎖--起來。

2019年7月5日 星期五

倒退攄的煞鼓 -- 佮伊佮做伙

←前一篇 


到今,咱已經共所有倒退攄所需要的倒退攄攏搜揣出來,這馬是時機來共伊佮做伙。咱先來看伊的圖:


一棧一棧的實作,是囥佇 layers.py
伊主要的程式,是囥佇 two_layer_net.py

咱來斟酌解說一个:

    def __init__(self, input_size, hidden_size, output_size, weight_init_std = 0.01):
        # 開始攢好勢
        self.params = {}
        self.params['W1'] = weight_init_std * np.random.randn(input_size, hidden_size)
        self.params['b1'] = np.zeros(hidden_size)
        self.params['W2'] = weight_init_std * np.random.randn(hidden_size, output_size) 
        self.params['b2'] = np.zeros(output_size)

        # 共伊一棧一棧疊khi
        self.layers = OrderedDict()
        self.layers['Affine1'] = Affine(self.params['W1'], self.params['b1'])
        self.layers['Relu1'] = Relu()
        self.layers['Affine2'] = Affine(self.params['W2'], self.params['b2'])

        self.lastLayer = SoftmaxWithLoss()

這前半段佮神經網路的學習siâng
第二段是使用一个特別的資料結構: OrderedDict 來共一棧一棧整--起來。
啥乜是 OrderedDict 咧? 簡單講,伊是一款字典 (Dictionary),毋過伊會共添入去的資料照順序排予好勢。原在字典內面的資料,是用 Khí(Key) 來揣出來,伊是無順序,由在 Python 家己去安排。按呢有啥乜好處? 小等你就知。


向前行


主程式是 gradient(),一開始就呼 (khoo/call) self.loss(x, t)

    def gradient(self, x, t):
        # forward
        self.loss(x, t)

        # backward
        dout = 1
        dout = self.lastLayer.backward(dout)
        
        layers = list(self.layers.values())
        layers.reverse()
        for layer in layers:
            dout = layer.backward(dout)

        # 設定
        grads = {}
        grads['W1'], grads['b1'] = self.layers['Affine1'].dW, self.layers['Affine1'].db
        grads['W2'], grads['b2'] = self.layers['Affine2'].dW, self.layers['Affine2'].db

        return grads


這 loss() 就是共向前行(Forward propagation),softmax 和 error function 一擺做到底。

    # x:入力データ, t:教師データ
    def loss(self, x, t):
        y = self.predict(x)
        return self.lastLayer.forward(y, t)

loss() 分兩步: predict() 佮 lastLayer.forward(),也就是共上尾彼 SoftmaxWithLoss() 另外做。

    def predict(self, x):
        for layer in self.layers.values():
            x = layer.forward(x)
        
        return x

predict() 嘛是有影簡單。一个 for 箍輾,照步來,去呼 layers 內面,逐棧的 forward() 函式。照頂懸 __init__() 所指定,就是照 Affine1, ReLU1, Affine2,一个一个呼伊的 forward(),共逐棧的輸出,成做會一棧的輸入。

這就是 OrderedDict 好用的所在,我毋免一个一个寫出來,用 for loop 就好。



倒退攄

佇 gradient() 內底,dout = 1 做參數開始,先呼上尾棧 lastLayer 的 backward()。紲落來這幾逝嘛是用  OrderedDict 的奇巧:

        layers = list(self.layers.values())
        layers.reverse()
        for layer in layers:
            dout = layer.backward(dout)

因為伊是照順序,我共伊的值捎出來,共伊顛倒反 (layers.revers()),閣用 for 箍輾,伊就是倒退攄囉。

結束了後,咱欲愛的 W1 和 W2 的改變,是囥佇 Affine layer 內底 (參考 layers.py 的 Affine Clase), 所以愛共伊掠出來:

        grads['W1'], grads['b1'] = self.layers['Affine1'].dW, self.layers['Affine1'].db
        grads['W2'], grads['b2'] = self.layers['Affine2'].dW, self.layers['Affine2'].db

擲轉去。


轉去 20181028 這工

 20181028 這工是咱頭一擺來訓練神經網路。gradient() 就是囥佇 train_neuralnet.py 內面使用,咱得著的 grads, 是予伊用來改變 network_parameters: 

    grad = network.gradient(x_batch, t_batch)
    for key in ('W1', 'b1', 'W2', 'b2'):
        network.params[key] -= learning_rate * grad[key]

紲落來才閣進行下一擺的訓練。

uì 20181028 講到今嘛年外,講甲落落長,伊上重要的觀念就是共正港的數學微分,伊的運算方式,改用倒退攄的方法。倒退攄,其實就是共微分个運算拍破,分解做上基本的神經元有法度算。按呢生會使予會算數速度加有夠緊,按呢才有實用的價值。

寫到遮,應該共神經網路上基本的原理講到一个崁站矣。這个系列嘛欲踮遮到煞鼓矣。這本書: 

Deep Learning|用Python進行深度學習的基礎理論實作 


後半段閣有袂少內容。毋過,完全共人用心血寫落來的書囥佇網路頂予人免費看,按呢嘛無好。向望逐家若是有興趣,會當去共伊交關一咧。

因為是利用做工課掠外,有閒的時間才寫,有當時閣會懶屍,所以進度真慢。總是,佇寫的時陣,才會了解台語欲寫專業的物件,會拄著啥乜困難,解決的方向是佗一爿? 加一个行業有人用台語寫作,就加一个行業的專有名詞會生--出來。各行各業攏有人用台語寫,台語才會健康生湠落去。特別是上新个智識,咱莫共家己母語限制佇厝內,抑是懷舊爾爾。

←前一篇 


佇 Linux 來看GPX 檔案

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