2023年1月26日 星期四

關於 NUC 準系統迷你電腦

最近在滑臉書時看到迷你電腦魔方的廣告, 大小就跟魔術方塊差不多 :





這讓我有點動心, 一是家裡那台機齡超過 10 年的聯想桌電 (超耐用) 最近無法開機, 出現 DiDiDiDi (最後一個 Di 音調拉低) 叫聲; 二是最近在論壇看到有人在問用樹莓派架設伺服器問題, 留言回覆中有人說 Pi 4 這麼貴, 還不如乾脆買這種 NUC 小電腦, Windows 系統較熟悉好用.

現在一些大廠如 ASUS, ACER, MSI 都有出這種迷你電腦, 參考 : 


但是這種小電腦功耗比樹莓派大, 大約在 30W~50W 左右, 而且我手上還有一塊 Mapleboard 與兩塊 Pi 3 B+, 大部分工作都用 ACER Swift 5 筆電處理, 桌機真的很少用 (除了要用到光碟機外), 所以就先記下來備考. 

料理實驗 : 清蒸鱸魚 (片)

年初三台中表哥與姪女來訪, 因冰箱還有年前小舅媽送的鱸魚片, 中午就參考下面的食譜做了一道 "清蒸鱸魚", 做法超級簡單 : 


材料 : 
  • 鱸魚片 1 片
  • 薑片 若干片
  • 蔥 2 支
  • 米酒 適量
  • 鹽 適量
  • 醬油 適量
  • 香油 適量
做法 : 
  1. 蔥切段, 薑切片, 用蔥白與薑片舖底使熱度能穿透且避免魚黏盤.
  2. 鱸魚片洗淨擦乾後抹些鹽醃 3 分鐘後放在蔥白與薑片上, 加適量米酒放些蔥綠, 置電鍋外鍋加一杯水蒸.
  3. 電鍋跳開後取出, 去除魚片上的蔥綠, 放上新鮮的蔥絲, 加一匙醬油與香油即可. 
用電鍋蒸非常方便, 大概 10~15 分鐘即可上桌. 





不過電鍋料理常會忘記自己有在蒸東西, 我到大家快吃飽時才想起似乎少了一道菜, 哈哈. 

料理實驗 : 清蒸白灼蝦

過年前水某買了一盒草蝦, 年初二晚上參考肥大叔的做法, 實作了這道 "清蒸白灼蝦" (不過他用的是白蝦, 不是草蝦) : 

# 吃到最天然的鮮甜味!「清蒸白灼蝦」香氣十足超Q彈超解饞




材料 : 




另外還有蠔油, 紹興酒, 醋 (被剪圖剪掉了). 

做法 : 
  1. 蝦洗淨後用剪刀將蝦尖, 蝦鬚, 蝦腳剪掉, 然後將蝦頭向下扳開, 拉出腸泥. 
  2. 洋蔥切細條鋪在鍋底, 上面鋪薑片, 蔥段, 蒜片, 倒入適量紹興酒, 米酒, 放入蝦子後蓋上鍋蓋中小火煮約 7 分鐘熄火燜 5 分鐘即可. 
  3. 接著調醬料, 碗中放入蒜末, 蔥花, 辣椒圈, 鍋中熱油至 180 度淋到醬料中, 加入醬油, 醋, 蠔油, 少許糖, 鹽, 天然鮮味粉, 與香油, 攪勻即可. 
但煮好忙著開吃忘了照相. 

另外也可參考臉書 "愛做飯" 的白灼蝦影片, 做法類似, 但他沾醬有加香菜 :


總之秘訣就是不要用水煮蝦, 要用米酒. 

2023年1月24日 星期二

好站 : 安裝 LNAMP Server + phpMyAdmin 在 Linux 系統上輕鬆架設網站

過年前將 Mapleboard 帶回鄉下家, 打算在上面架設網頁伺服器, 但居然忘記帶最重要的電源線! 今日 (年初三) 菁菁有客人約做睫毛要載她回高雄, 順便拿電源線 + HDMI 線回來測試. 早上只好先進行紙上作業, 爬文做一下功課, 再決定要架 Apache 還是 Nginx. 早上找到下面這篇文章, 發現居然有可同時架 NGINX 與 Apache 的套件可用 : 


原來 LNAMP=LAMP + NGINX, 這組合的優點是可用 NGINX 來處理處理靜態檔案, 反向代理, 資源分配; 用 Apache 來處理動態網頁程式, 這樣的綜效比單獨使用 Apache 要好得多. 不過, 作者認為, 如果沒有要用到 Apache 的 .hraccess 功能, 其實不建議用 Apache 來跑 PHP, 而是應該使用 NGINX. 關於 .htaccess 參考 : 


總之, 若沒用到 .htaccess 的話, 用 NGINX 就好, 參考作者另一篇文章 : 


我是想同時可執行 Python + Django + Flask 與 PHP (雖然比較少用了), 所以 port 80 應該會給 Python Web, 8080 給 PHP.

參考 :


作者還有更多很棒的作品分享 (寫了很多 Rust 解題文章), 參考 :


2023年1月23日 星期一

2023 年第 4 周記事

今年春節放十天, 長到有點忘了今夕何夕. 今年年夜飯因為小年夜去溫肚火鍋慶祝姊姊與菁菁生日, 所以姊姊說年夜飯不想吃火鍋, 所以不像往年那樣由水某去市場買羊肉爐, 而是由本大廚掌廚, 小舅媽拿來的魷魚, 吳郭魚, 以及紹興酒香腸就是基本菜單, 加上用除夕祭祖的雞豬肉滷冬瓜與高麗菜封, 還有新莊市場買的魚捲, 也是非常豐盛了. 

這次特別觀察了爸製作魷魚沾醬的做法, 首先是用一條老薑磨出半碗薑末, 加入一匙味磳, 一匙細砂糖, 一匙醬油, 加適量水調勻即可, 浸軟的魷魚切片後, 入滾水鍋中煮約 10 分鐘撈出盛盤, 沾這種醬最對味了 : 

 


昨天年初一早上是拜廟行程, 從獅形頂, 榕樹下伯公, 山下伯公, 到水仙王伯公依序上香參拜, 回到家剛好要準備午餐了, 下午則是包水餃, 晚餐吃水餃我就輕鬆些, 因為調餡料是水某的事. 今天初二台中表哥偕姪女來訪, 我又煮了一大桌菜, 姪女坐定後看了整桌菜, 問我說這都是你煮的? 讓我有種莫名的成就感. 

初一下午我逛到後院發現樹葡萄掛滿樹枝, 回屋拿了盆子一一摘下居然裝了半盆 : 





我家樹葡萄品種與阿泉伯家的不同, 果粒較小但較甜. 

除夕前收到一則英文賀年 Line 訊息, 原來是以前去正修當業界老師授課時的印尼學生傳來的, 她說由於我在課堂上鼓勵他們追求卓越與專業的一番話, 去年畢業後考上研究所, 現在在元智讀碩一. 當時面對這群與我家小狐狸年紀相當的孩子們, 我期許他們遠渡來台要好好把握, 雖然透過英文傳達當時不確定是否她們有否聽懂, 現在很高興知道有人聽進去了. 

帶了一堆書回老家過年, 本來打算好好玩一下 ChatGPT, 但三天下來基本上只複習了 C 語言, 因為過完年學校就要開學了, 似乎只有過年期間有時間備課. 坦白說兼課代課對我來說只是業餘救援, 會中斷我進行中的學研進度. 但換個角度想好像也是不錯的人生經驗. 

2023年1月20日 星期五

Mapleboard MP510-50 測試 (四) : 安裝螢幕截圖軟體 flameshot

為了記錄在 Mapleboard 上的測試, 我找到一個螢幕截圖軟體 flameshot, 雖然不像 Windows 上的 Picpick 便利, 但也還堪用.


首先用 sudo apt install 安裝 flameshot :

one@LX2438:~$ sudo apt install flameshot  
[sudo] one 的密碼: 
正在讀取套件清單... 完成
正在重建相依關係... 完成  
正在讀取狀態資料... 完成  
下列的額外套件將被安裝:
  grim
下列【新】套件將會被安裝:
  flameshot grim
升級 0 個,新安裝 2 個,移除 0 個,有 0 個未被升級。
需要下載 544 kB 的套件檔。
此操作完成之後,會多佔用 2,215 kB 的磁碟空間。
是否繼續進行 [Y/n]? [Y/n] Y
下載:1 http://ports.ubuntu.com jammy/universe arm64 flameshot arm64 11.0.0-2 [528 kB]
下載:2 http://ports.ubuntu.com jammy/universe arm64 grim arm64 1.4.0+ds-1 [15.2 kB]
取得 544 kB 用了 3s (160 kB/s)  
選取了原先未選的套件 flameshot。
(讀取資料庫 ... 目前共安裝了 251944 個檔案和目錄。)
正在準備解包 .../flameshot_11.0.0-2_arm64.deb……
解開 flameshot (11.0.0-2) 中...
選取了原先未選的套件 grim。
正在準備解包 .../grim_1.4.0+ds-1_arm64.deb……
解開 grim (1.4.0+ds-1) 中...
設定 flameshot (11.0.0-2) ...
設定 grim (1.4.0+ds-1) ...
執行 bamfdaemon (0.5.6+22.04.20220217-0ubuntu1) 的觸發程式……
Rebuilding /usr/share/applications/bamf-2.index...
執行 desktop-file-utils (0.26-1ubuntu3) 的觸發程式……
執行 hicolor-icon-theme (0.17-2) 的觸發程式……
執行 gnome-menus (3.36.0-1ubuntu3) 的觸發程式……
執行 mate-menus (1.26.0-2ubuntu2) 的觸發程式……
執行 man-db (2.10.2-1) 的觸發程式……
執行 mailcap (3.70+nmu1ubuntu1) 的觸發程式……

在終端機執行 flameshot gui 即可抓圖 (每次要抓圖時都要開啟終端機) : 

one@LX2438:~$ flameshot gui    

參考 :


2023年1月19日 星期四

Nvidia Jetson Nano 測試筆記 (六) : 安裝 Vino VNC 伺服器

去年我在 Jetson Nano 上安裝 vnc4erver 試圖利用 VNC 來進行遠端連線, 雖然順利安裝, 但連線時卻無畫面. 後來改安裝 Vino VNC 就可以了, 參考 :


昨天找到夜市小霸王尤博的文章, 他也是使用 Vino VNC, 但安裝方式不太一樣 : 


它是直接用 apt install vino 安裝 : 

tony1966@jetson-nano-tony1966:~$ sudo apt install vino   
正在讀取套件清單... 完成
正在重建相依關係          
正在讀取狀態資料... 完成
vino 已是最新版本 (3.22.0-3ubuntu1.2)。
以下套件為自動安裝,並且已經無用:
  apt-clone archdetect-deb busybox-static cryptsetup-bin dpkg-repack
  gir1.2-timezonemap-1.0 gir1.2-xkl-1.0 grub-common kde-window-manager
  kpackagetool5 kwayland-data kwin-common kwin-data kwin-x11
  libdebian-installer4 libkdecorations2-5v5 libkdecorations2private5v5
  libkf5activities5 libkf5declarative-data libkf5declarative5
  libkf5globalaccelprivate5 libkf5idletime5 libkf5kcmutils-data
  libkf5kcmutils5 libkf5package-data libkf5package5 libkf5plasma5
  libkf5quickaddons5 libkf5waylandclient5 libkf5waylandserver5
  libkscreenlocker5 libkwin4-effect-builtins1 libkwineffects11
  libkwinglutils11 libkwinxrenderutils11 libqgsttools-p1 libqt5designer5
  libqt5help5 libqt5multimedia5 libqt5multimedia5-plugins
  libqt5multimediaquick-p5 libqt5multimediawidgets5 libqt5opengl5
  libqt5positioning5 libqt5sensors5 libqt5sql5 libqt5test5 libqt5webchannel5
  libqt5webkit5 libxcb-composite0 libxcb-cursor0 libxcb-damage0 os-prober
  python3-dbus.mainloop.pyqt5 python3-icu python3-pam python3-pyqt5
  python3-pyqt5.qtsvg python3-pyqt5.qtwebkit python3-sip
  qml-module-org-kde-kquickcontrolsaddons qml-module-qtmultimedia rdate
使用 'sudo apt autoremove' 將之移除。
升級 0 個,新安裝 0 個,移除 0 個,有 0 個未被升級。

設定 VNC 伺服器登入選項 : 

tony1966@jetson-nano-tony1966:~$ gsettings set org.gnome.Vino prompt-enabled false  
tony1966@jetson-nano-tony1966:~$ gsettings set org.gnome.Vino require-encryption false   

檢視基地台 :

tony1966@jetson-nano-tony1966:~$ nmcli connection show   
NAME              UUID                                  TYPE      DEVICE  
EDIMAX-tony-Plus  d463f45e-9dfe-4f52-a68d-c32d92bfdfxx  wifi      wlan0   
docker0           be90dd4f-23a5-4dd8-ab34-60f2dec567a3  bridge    docker0 
l4tbr0            242782a8-c57c-45b0-9e2e-60aded73c876  bridge    l4tbr0  
EDIMAX-tony       e7c87bce-6d87-4c7f-9aba-926c23a65bxx  wifi      --      
TonyNote8         9e3539e8-9470-43a1-afa8-226adda813ea  wifi      --      
有線連線 1        05c9aa37-e891-3c64-8250-a79bee76732f  ethernet  --      

將網路卡加入 Vino 服務 : 

tony1966@jetson-nano-tony1966:~$ dconf write /org/gnome/settings-daemon/plugins/sharing/vino-server/enabled-connections "['EDIMAX-tony-Plus']"    
tony1966@jetson-nano-tony1966:~$ export DISPLAY=:0    

但啟動 Vino VNC 伺服器卻出現錯誤 : 

tony1966@jetson-nano-tony1966:~$ /usr/lib/vino/vino-server   
Invalid MIT-MAGIC-COOKIE-1 keyUnable to init server: 無法連接: 連線被拒絕
無法開啟畫面:
執行‘vino-server --help‘ 以查看所有可用的命令列選項清單

用 sudo 也是一樣 : 

tony1966@jetson-nano-tony1966:~$ sudo /usr/lib/vino/vino-server  
Invalid MIT-MAGIC-COOKIE-1 keyUnable to init server: 無法連接: 連線被拒絕
無法開啟畫面:
執行‘vino-server --help‘ 以查看所有可用的命令列選項清單
tony1966@jetson-nano-tony1966:~$ vino-server --help   
bash: vino-server:命令找不到

後來找到 nVidia 官網的教學文件, 其設定方法有點不同, 但卻有效, 參考 : 


設定自動開啟 VNC 伺服器 : 

若 Jetson Nano 為 2GB 開發板 (使用 LXDE) : 

tony1966@jetson-nano-tony1966:~$ mkdir -p ~/.config/autostart    
tony1966@jetson-nano-tony1966:~$ cp /usr/share/applications/vino-server.desktop ~/.config/autostart/.  

其他 Jetson Nano 開發板 (使用 GNOME) :

tony1966@jetson-nano-tony1966:~$ cd /usr/lib/systemd/user/graphical-session.target.wants  
tony1966@jetson-nano-tony1966:/usr/lib/systemd/user/graphical-session.target.wants$ sudo ln -s ../vino-server.service ./.    

設定 VNC 伺服器登入選項 : 

tony1966@jetson-nano-tony1966:/usr/lib/systemd/user/graphical-session.target.wants$ gsettings set org.gnome.Vino prompt-enabled false   
tony1966@jetson-nano-tony1966:/usr/lib/systemd/user/graphical-session.target.wants$ gsettings set org.gnome.Vino require-encryption false      

設定登入 VNC 伺服器之密碼 : 

tony1966@jetson-nano-tony1966:/usr/lib/systemd/user/graphical-session.target.wants$ gsettings set org.gnome.Vino authentication-methods "['vnc']"    
tony1966@jetson-nano-tony1966:/usr/lib/systemd/user/graphical-session.target.wants$ gsettings set org.gnome.Vino vnc-password $(echo -n '輸入VNC登入密碼'|base64)   

設定開機自動執行 VNC Server :

tony1966@jetson-nano-tony1966:~$ mkdir -p ~/.config/autostart    

重新啟動 :

tony1966@jetson-nano-tony1966:~$ sudo reboot

這樣就可以順利從遠端透過 VNC viewer 順利連線 Jetson Nano 了. 

參考 :


2023年1月18日 星期三

Mapleboard MP510-50 測試 (三) : 安裝 gnome-tweaks

今天繼續測試我的 Ubuntu Linux 小電腦 Mapleboard MP-510, 本系列之前文章參考 :


上週送回原廠刷機送回來之後, 測試發現 HDMI 仍然會在休眠後醒不過來, 只要走開一陣子再回來螢幕就叫不醒, 明明沒當機還是得重開機, 令我非常苦惱. 我去年開始測試時曾在原廠網站找到關閉休眠的方法, 但現在這篇文章已被刪除, 我當時也未將設定方法紀錄下來. 

今天爬文找到下面這篇文章, 裡面提供三種方法, 但作者說明前兩種其實無效, 我測試確實如此, 最後用第三種方法安裝 gnome-tweaks 終於成功關閉 Ubuntu 的休眠 : 


第一種方法是透過系統呼叫方法將休眠遮罩 (mask) 掉, 指令如下 : 

one@LX2438:~$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
[sudo] one 的密碼: (輸入管理員密碼, 預設 1234)

然後用下列指令查詢休眠功能是否被遮掉 : 

ne@LX2438:~$ systemctl status sleep.target   
○ sleep.target
     Loaded: masked (Reason: Unit sleep.target is masked.)
     Active: inactive (dead)

顯示 masked 表示休眠功能被停止了, 但實測結果無效, 仍然進入休眠喚不醒. 

接著測試第二種方法, 到 "控制中心" 打開 "電源管理程式" : 




將 "動作" 與 "顯示" 這兩項都設為 "永不" : 




可惜這方法也是無效果. 

最後用第三種方法用 gnome-tweaks 才搞定 : 

原文說要安裝 gnome-tweak-tool 這軟體, 但卻無法找到下載源, 原來已改版為 gnome-tweaks : 

one@LX2438:~$ sudo apt install gnome-tweak-tool    
[sudo] one 的密碼: 
正在讀取套件清單... 完成
正在重建相依關係... 完成  
正在讀取狀態資料... 完成  
無法取得套件 gnome-tweak-tool,但它卻被其它的套件引用了。
這意味著這個套件可能已經消失了、被廢棄了,或是只能由其他的來源取得
然而,下列的套件取代了它:
  gnome-tweaks   

E: 套件 gnome-tweak-tool 沒有可安裝的候選版本

改為下載安裝 gnome-tweaks : 

one@LX2438:~$ sudo apt-get install gnome-tweaks    
正在讀取套件清單... 完成
正在重建相依關係... 完成  
正在讀取狀態資料... 完成  
下列的額外套件將被安裝:
  gnome-settings-daemon gnome-settings-daemon-common gnome-shell-common mutter-common
  yaru-theme-gnome-shell
建議套件:
  usbguard gnome-shell-extension-prefs | gnome-shell-extension-manager
下列【新】套件將會被安裝:
  gnome-settings-daemon gnome-settings-daemon-common gnome-shell-common gnome-tweaks mutter-common
  yaru-theme-gnome-shell
升級 0 個,新安裝 6 個,移除 0 個,有 0 個未被升級。
需要下載 671 kB 的套件檔。
此操作完成之後,會多佔用 13.2 MB 的磁碟空間。
是否繼續進行 [Y/n]? [Y/n] Y
下載:1 http://ports.ubuntu.com jammy-updates/main arm64 gnome-settings-daemon-common all 42.1-1ubuntu2.1 [17.6 kB]
下載:2 http://ports.ubuntu.com jammy-updates/main arm64 gnome-shell-common all 42.5-0ubuntu1 [183 kB]
下載:3 http://ports.ubuntu.com jammy-updates/main arm64 gnome-settings-daemon arm64 42.1-1ubuntu2.1 [317 kB]
下載:4 http://ports.ubuntu.com jammy-updates/main arm64 mutter-common all 42.5-0ubuntu1 [13.3 kB]
下載:5 http://ports.ubuntu.com jammy-updates/universe arm64 gnome-tweaks all 42~beta-1ubuntu2 [59.5 kB]
下載:6 http://ports.ubuntu.com jammy/main arm64 yaru-theme-gnome-shell all 22.04.4 [80.5 kB]
取得 671 kB 用了 2s (329 kB/s)                   
選取了原先未選的套件 gnome-settings-daemon-common。
(讀取資料庫 ... 目前共安裝了 251381 個檔案和目錄。)
正在準備解包 .../0-gnome-settings-daemon-common_42.1-1ubuntu2.1_all.deb……
解開 gnome-settings-daemon-common (42.1-1ubuntu2.1) 中...
選取了原先未選的套件 gnome-shell-common。
正在準備解包 .../1-gnome-shell-common_42.5-0ubuntu1_all.deb……
解開 gnome-shell-common (42.5-0ubuntu1) 中...
選取了原先未選的套件 gnome-settings-daemon。
正在準備解包 .../2-gnome-settings-daemon_42.1-1ubuntu2.1_arm64.deb……
解開 gnome-settings-daemon (42.1-1ubuntu2.1) 中...
選取了原先未選的套件 mutter-common。
正在準備解包 .../3-mutter-common_42.5-0ubuntu1_all.deb……
解開 mutter-common (42.5-0ubuntu1) 中...
選取了原先未選的套件 gnome-tweaks。
正在準備解包 .../4-gnome-tweaks_42~beta-1ubuntu2_all.deb……
解開 gnome-tweaks (42~beta-1ubuntu2) 中...
選取了原先未選的套件 yaru-theme-gnome-shell。
正在準備解包 .../5-yaru-theme-gnome-shell_22.04.4_all.deb……
解開 yaru-theme-gnome-shell (22.04.4) 中...
設定 gnome-settings-daemon-common (42.1-1ubuntu2.1) ...
設定 yaru-theme-gnome-shell (22.04.4) ...
update-alternatives: 在自動模式下以 /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource 來提供 /usr/share/gnome-shell/gdm-theme.gresource (gdm-theme.gresource)
設定 gnome-shell-common (42.5-0ubuntu1) ...
設定 mutter-common (42.5-0ubuntu1) ...
執行 mailcap (3.70+nmu1ubuntu1) 的觸發程式……
執行 bamfdaemon (0.5.6+22.04.20220217-0ubuntu1) 的觸發程式……
Rebuilding /usr/share/applications/bamf-2.index...
執行 desktop-file-utils (0.26-1ubuntu3) 的觸發程式……
執行 hicolor-icon-theme (0.17-2) 的觸發程式……
執行 gnome-menus (3.36.0-1ubuntu3) 的觸發程式……
執行 libglib2.0-0:arm64 (2.72.4-0ubuntu1) 的觸發程式……
執行 mate-menus (1.26.0-2ubuntu2) 的觸發程式……
執行 man-db (2.10.2-1) 的觸發程式……
設定 gnome-settings-daemon (42.1-1ubuntu2.1) ...
設定 gnome-tweaks (42~beta-1ubuntu2) ...

雖然順利完成安裝, 但執行 gnome-tweaks 時卻出現警告與錯誤 : 

one@LX2438:~$ gnome-tweaks    
WARNING : Error getting shell mode   
CRITICAL: Error getting shell version
WARNING : Could not list shell extensions 
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gtweak/tweaks/tweak_group_appearance.py", line 144, in __init__
    extensions = self._shell.list_extensions()
  File "/usr/lib/python3/dist-packages/gtweak/gshellwrapper.py", line 76, in list_extensions
    return self._proxy.proxy_extensions.ListExtensions()
  File "/usr/lib/python3/dist-packages/gi/overrides/Gio.py", line 349, in __call__
    result = self.dbus_proxy.call_sync(self.method_name, arg_variant,
gi.repository.GLib.GError: g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service files (2)

但即使有警告與錯誤, 程式仍然正常輸出如下 GUI 畫面, 將第一項 "當闔上筆電上蓋時暫停電腦" 這項取消勾選即可 :



這樣 Ubuntu 就不會因為一段時間未使用而進入休眠狀態 (暫時不使用時直接關掉螢幕就好啦), 當然就不會有喚不醒問題. 這似乎不是主機板的問題, 而是 Ubuntu 作業系統本身的問題. 

2023-01-28 補充 : 

今天找到一個關於安裝 gnome-tweaks 的一篇文章 :


購買 VTECH CL6217A 無線電話

因為鄉下老家的無線話機使用十餘年後按鈕已不靈光, 想要換支新的, 昨晚去自由二路中華電信門市 (07-3441318) 看貨, 原本想買 VTECH 無線電話 MS1100, 我查詢網路 PCHome 賣 1390 元, 但中華門市只要 1250 元 : 




正要結帳時看到 VTECH 另一型號 CL6217A, 與上面的 MS1000 功能差不多, 但這支的座機有外接天線, 我想發射距離應該較遠, 所以趁尚未刷卡改換成這支, 價格是 1490 元 : 




今晚開箱測試功能正常, 具有免手持通話功能很方便. 

PyTorch 深度學習攻略筆記 (二)

今天繼續記錄閱讀 "PyTorch 深度學習攻略" 的心得筆記, 本系列之前的文章參考 :


第二章筆記摘要如下 : 
  1. 預訓練模型可以看做是一段定義好的程式, 可讓使用者輸入資料並傳回輸出的結果. 此程式之特性由模型之架構與訓練資料集所決定. 模型已經用大量的輸入-輸出對訓練過, 並具有固定之輸出資料格式. 使用現成的預訓練模型可快速實作一個深度學習應用, 可省去自行訓練所需的時間. PyTorch Hub 網站提供了統一的介面可讓使用者下載預訓練模型. 學習如何用 PyTorch 執行一個預訓練模型是非常有用的技能.
  2. ImageNet 是一個由史丹福大學維護的龐大圖像資料集, 起源於 2010 年起之影 ILSVRC 像辨識學術競賽, 裡面有超過 1400 萬張圖片, 全部都經過人工標註 (遵循 WordNet 關於標籤之名詞層次規範). ImageNet 競賽每年的任務不同, 例如 : 
    (1). 圖片分類 (貓, 狗, 巴士等)
    (2). 物體定位 (物體在圖片中之位置)
    (3). 物體辨識 (識別並標記圖片中之多個物體)
    (4). 場景分類 
    (5). 場景解析 (將圖片分割成不同之語義類別)
  3. ILSVRC 競賽主辦單位提供的訓練集包含 120 萬張圖片, 並使用 1000 個詞彙進行人工標籤. 輸入之圖片需先預處理成 torch.Tensor 3D 浮點數張量 (包含一個色彩通道軸與長寬兩個空間軸). 接著將處理過的圖片輸入到預訓練模型, 模型會輸出個類別的分數, 得分最高者即模型認為是該圖片之類別, 1000 種類別就會給出 1000 個分數 (包含 1000 個元素之張量). 
  4. PyTorch 的 TorchVision 函式庫包含數個電腦視覺模型, 例如 AlexNet, ResNet, 與 Inception v3 等, 也包含與 ImageNet 類似的資料集. 可用下列指令檢視模型種類 :

    from torchvision import models  
    dir(models)   

    在 Colab 的執行結果如下 (很長的 list) :


    其中首字母大寫的是 Python 類別, 都是不同結構的神經網路模型, 小寫的則是函式, 很多是前面那些神經網路模型類別的建構式, 呼叫它們會傳回這些網路的模型實體. 本章主要介紹最有名的 AlexNet 與 ResNet. 
  5. 在殘差網路 (ResNet) 出現之前, 層數很多的神經網路很難訓練. 
  6.  AlexNet 是 2012 年的 ILSVRC 競賽的冠軍, 以 15.4% 的預測錯誤率勝過亞軍的 26.2%. 此成就使人們開始注意到深度學習在視覺辨識任務中的潛力, 此後陸續提出的架構與模型不斷使錯誤率下降, 目前最新的 FixEfficientNet-L2 模型之錯誤率已降至 1.3%.
  7. AlexNet 在結構上由前面五層過濾層對圖片進行縮小轉換 (96->256->384->384->256), 最後一個過濾層輸出一個 4096 個元素的向量, 然後經過一個 4096 神經元的全連接層後接到輸出層輸出 1000 個元素的向量 (分數), 其中最大者即為預測的結果. 
  8. 建立 AlexNet 模型的指令如下 : 

    from torchvision import models 
    alexnet=models.AlexNet()

    此指令會建立預設層數與神經元數的 AlexNet 模型.
  9. 典型的電腦視覺深層神經網路的架構是由大量的過濾器與非線性函式組成的連續序列. 
  10. 在對神經網路進行訓練之前, 必須對輸入資料做預處理 (preprocessing), 例如圖片要符合尺寸, RGB 數值要在相近範圍內 (即有相近之平均值與標準差). PyTorch 的 torchvision 模組提供的 transform 函式庫可用來對圖片做預處理. 
  11. 生成對抗網路 (GAN) 使用兩個神經網路模型, 一個扮演創作贗品的畫家 (生成器); 另一個扮演鑑別贗品的藝術家 (鑑別器), 兩者互相競爭, 不斷重複創作與鑑別的動作. 這種雙網路設計並非典型的深度學習架構, 但用在遊戲中卻有意想不到的結果.