Hello World
CodeTengu Weekly 碼天狗週刊
如果命運的齒輪沒有出差錯,CodeTengu Weekly 都會在 UTC+8 時區的每個禮拜一 AM 10:00 出刊。每週會由三位 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到感興趣的東西,可能下一期就有了。當然你也可以瀏覽一下前幾期的內容。
目前的 curator 陣容:
- @vinta - I failed the Turing Test - 科幻迷,最近在玩 Detroit: Become Human
- @saiday - Imnotyourson - 電量給我這種人用就是一種浪費
- @tzangms - Oceanic / 人生海海 - 最近真的都在玩薩爾達
- @fukuball - ImFukuball - 有新工作了,但歡迎直接挖角
- @mingderwang - Ethereum enthusiast
- @kako0507 - 熱愛嘗試新事物的前端工程師
- @chiahsien - 》〉》我們要找 iOS 工程師《〈《
- @uranusjr - Smaller Things - 聽說 Pinkoi 少了個棒球記者所以現在去應徵前端應該有機會!?Shadowverse:
uranusjr - @kkdai - 態度萬歲 - Learning Deeply....
- @yhsiang - AMIS / MAICOIN 徵才中,歡迎聯繫!
- @johnlinvc - 挑戰自動化家中電器
- @drumrick - 歡迎加入台灣 Kaggle 交流區
- @wancw
- @allanlei
- @theJian
你也可以關注我們的 Facebook、Twitter、GitHub 或 Open Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。
@uranusjr
Inside the Cheeseshop: How Python Packaging Works
PyCon 2018 已經把所有議程的錄影放出來了,裡面有很多好料,大家記得去淘啊。不知道 PyCon Taiwan 什麼時候也能有這種效率⋯⋯不過小本經營就麻煩大家擔當點了,總之盡快。或者你明年說服你公司多拿點錢出來我們就能快一點。
總之我想特別推薦這個 talk,由新 PyPI pypi.org 維護者 Dustin Ingram 簡述 Python 套件管理究竟是怎麼走到現在,以及之後要怎麼繼續。雖然我以前也有講過類似的主題,不過像 The Vaults of Parnassus 我還是第一次聽到⋯⋯我在 Python 界還是很菜,這種歷史有沒有親身經歷還是有差。
我覺得貫穿整個演講的 theme 很棒:Python 套件管理的每個部分,都是為了解決某個問題而被創造,但也各自帶來新的問題。常常會聽到「為什麼 Python 套件管理會⋯⋯」與「為什麼你們又要開發新東西」的疑問,但這兩個問題不僅互為因果,又由於 Python 的各種歷史因素互相嵌套而非常難講清楚。我以後大概很長時間會 reference 這個 talk 來解釋。它對於 pip vs Conda、Pipfile(.lock)、pyproject.toml 的解釋也是我聽過最清楚的。三個不同的問題彼此相關,卻又需要獨立的解決方案,所以有三個不同解法同時在進行。如果你有過「為什麼有了 Pipfile 又需要 pyproject.toml」之類的疑問,這應該能澄清一些疑惑。
另外,如同最後一部分所述,Python 套件管理生態系真的完全、完全是由志願者在支撐。我前幾天剛好有說到(因為 PSF 董事會剛好改選),PSF 不負責進行 Python 的任何開發,所有 Python 開發也是完全志願性質,或者拿其他商業公司薪水。如果你有能力,就請考慮發個 pull request,主動參與開發吧。因為真的你不貢獻就沒有人了。
Pipenv 到底解決了什麼問題?
很多人在討論 Pipenv 的時候也會落入一個誤區,就是並沒有很理解它的所有部份,就根據自己看到的表象進行評價。這可能也是它一開始設計的決定,雖然不是錯誤,但是揉合了太多還不是普遍知識的元件導致。剛好我前幾天也講到這個主題,就一起放上來。希望這樣有釐清一些 Pipenv 定位的問題。
因為這個回應已經太長,我並沒有直接在裡面解釋「為什麼 Pipenv 的 locking 步驟這麼慢」。這有兩個原因。其中一個我有暗示,是因為它做了 pip 沒有做的事情(理論解析依賴視圖),如果你先看了第一個影片,可能猜得到另外一個:PyPI 其實根本不知道套件的依賴關係,所以 Pipenv 在解析時,必須把整個套件抓下來解析一次。如果你依賴的套件本身就很大(例如 Numpy 之類的),編譯時間很長,就會把解析步驟拖得非常、非常久。這是 setup.py 帶來的原罪,在淘汰它之前無法根治(不過我在引文裡有提到,還有一些改善空間啦)。
另外發問人在後來補充了他對 Python 套件目錄與 node_modules 設計差異的感想。確實如他所說,Python 的套件目錄無法處理依賴版本衝突的問題,所以 npm 的設計雖然常常讓人詬病,還是有其優點——我沒有查證,不過或許它本來就是針對這個問題所設計。但是它造成的後果還是太可怕,不值得為了虛無縹緲的假設問題犧牲,所以還是很多人在試圖改良它,而既然 Python 還沒踏入這個棺材,或許也還有另闢蹊徑的機會。Russ Cox 最近為 Go 提出的作法也十分有趣。
10 Things I Regret About Node.js
說到 npm——Ryan Dahl(Node 的初始作者)最近的講題整個很爆炸。Node 整個太爛所以我放棄了直接砍掉重練!當然 npm 也是他後悔的項目之一。不管它一開始想解決什麼問題,它的設計實在不夠好,尤其搭配 JavaScript 的「極簡風」標準函式庫,更讓問題顯得嚴重。
這個演講就純客觀角度而言,就是非常、非常中肯的批評,而這個批評的來源或許也能讓一些 Node fanboys 正視這個生態系的問題,好好自省一下。就我這個局外人而言,這也是個好好反省 Python 生態系有什麼需要轉換方向的部份;或許我們(還?)不需要把所有東西砍掉重練,不過至少需要不斷前進,甚至得思考怎麼改革一些很根深蒂固的問題(例如那個 G 開頭不能說的名詞),才能不被淘汰。
@drumrick
檢討 ImageNet 以及 CIFAR-10,或是?
最近,在影像分類界地位無可動搖的兩大測試資料集 ImageNet 和 CIFAR-10 紛紛遭到質疑。首先 Google 五月底發論文討論了使用 ImageNet 做 transfer learning 的能力,接著是六月初 Berkeley 跟 MIT 發論文討論了 CIFAR-10 各模型的泛化能力。
Google: Do Better ImageNet Models Transfer Better?
挑了 13 個模型,12 個資料集,分別做 ImageNet Pre-trained Feature、ImageNet Pre-trained Fine Tuned、Train From Scratch 三種情況。說結論,fine tuned 幾乎都能維持相對的水準,少數資料集 train from scratch 會有比較好的結果,但是 fine tuned 花的時間相對少得多。簡單來說,用 ImageNet 表現好的模型做 transfer learning 還是可行的。
Berkeley & MIT: Do CIFAR-10 Classifiers Generalize to CIFAR-10?
這篇的出發點就不是那麼友善,作者們仿造 CIFAR-10 製作資料的流程,自己做了一份小的「CIFAR-10 水貨」,接著拿各個模型來對這個「CIFAR-10 水貨」進行測試,結果,大家的準確率都掉了,有的還掉得離譜。幾位大神見獵心喜,紛紛發表看法,OpenAI 表示之前也在 MNIST 觀察到同樣的情況,Keras 的作者 Francios 更是一連發表了好幾則推特,表達對於目前整個研究界集體 overfitting 測試資料集的情況,應該有更好的改善。
到底是測試資料集真的不適用?或是 overfitting 的模型不應該?至少這兩篇的實驗結果,在各位下次挑選模型的時候,能多個參考。
MIT 課程代碼 9.11,零基礎入門人類大腦。
很多深度學習的書,都會留一個短短的章節,簡短粗略地介紹一下人類的大腦是怎麼運作的。兩年前在讀的時候,基本上這段我都跳過,因為當時主流的模型們,都跟真正的腦沒有太大關聯。但目前發展了兩年,各種模型都到了一個瓶頸,未來真的很難說,起碼現在包涵 DeepMind、Hinton 等有一派大師是這樣相信的,最近幾個發表也有這樣的脈絡。所以我覺得在這個時間點,花點時間了解一下自己的腦,也是不錯的。
號稱零基礎的這堂課,因為沒有中文字幕,剛開始還是有些專有名詞要查一下字典,不過因為這些專有名詞頻繁重複出現,久了就記住了。我身為一個真實零基礎的試驗者,到目前來說,課程內容理解還是沒有問題的,一開始問號會比較多,往後看一點就會懂了,真還不懂,就查查資料,畢竟只是初階課程,師父領進門,修行在個人XD
Google 在 Coursera 上面新發表的系列課程
Machine Learning with TensorFlow on Google Cloud Platform Specialization
- 從課表看來,整個課程大約要 10 週,充斥大大小小的測驗、作業與實作。
- 課程看似企業訓練導向,注重實際資料與經驗。有些內容會在 Google 買下的另一家企業訓練的公司 Qwiklabs 上面操作。
- 搭配其他 Google Cloud Platform 的服務,如:Datalab、Dataflow、Dataprep、BigQuery、Cloud Machine Learning Engine
- 目前只有英文
Google 在自家網站上也開了另一個名為 Machine Learning Practica 不過暫時只有一堂阿貓阿狗的 CNN 小課程。
其他 Google 機器學習課程
在线人工智能学院,微软专业学位课程。
英文總站
內容看來相當全面啊!
課程內容:
- AI 導論
- Python
- 數學概要
- 數據分析的道德與法律
- 數據科學概要
- 機器學習法則
- 深度學習
- 強化學習
- 自然語言處理
- 語音辨識
- 電腦視覺
- 期末專題
數據增強演算法
影像處理方面,已經有好幾個套件寫好各式各樣的數據增強功能,但到底哪些才有效呢?有些數據集做垂直翻轉效果很好,有些顯然不行,例如 MNIST。現在 Google 用這個演算法,教你數據增強哪些該做,效果更好!
@allanlei
Designing for Kubernetes
Kubernetes offers alot of power to the developer. While it can support a traditional LAMP-style stack, it can do so much more. Understanding the components and lifecycle of Kubernetes can allow the developer to include infrastructure in the design itself.
Full Cycle Developer
Ownership is important. In some companies, design, development, testing and support are different teams. One team passes on their work to the next and feedback is sometimes lost.
Netflix has applied what they call Full Cycle Developer where a developer takes part in all stages of development, from design to maintenance and support. As they have indicated in their write up, it might not suitable for all developers/teams and you must have the proper tools and training available for developers to succeed.