PlaidML

前陣子 Apple 發表了新筆電,卻僅止搭配 AMD GPU, 讓我滿心期待可以使用 NVIDIA 訓練 Tensorflow 模型的期望落空。(森氣😤)

在閱讀了這篇文章後,下載了 PlaidML 來試用,它有試驗級功能:支援 Mac + OpenCL GPU(Intel/AMD) 或是原生的 Metal API, 來訓練神經網路,好開心啊!

PlaidML 是一套開源機器學習加速庫,希望讓使用者透過 Keras APIs 直接使用(任何一家的)GPU 來運算,也就是支援 Intel/NVIDIA/AMD/Apple Metal. 看到這裡,不禁讓我有些心動,於是下載來試用。
http://vertex.ai/blog/announcing-plaidml

Continue reading

C 語言

推薦三本必讀 C 語言學習書:
第一本由鄭昌杰所著,裡頭涵蓋所有 C 語言的面向主題,對於 C 語言本身語言特性,描述得相當好,很符合業界開發實務應用,上班前請務必複習:

交通大學出版社 – C 語言入門與進階教學: 跨平台程式設計及最新 C11 語法介紹
作者:鄭昌杰

Continue reading

機器學習 – 馬力歐/MarI/O

https://www.youtube.com/watch?v=qv6UVOQ0F44
MarI/O - Machine Learning for Video Games

這部影片解釋了我們利用神經網路來玩馬力歐遊戲:

• 綠色線:表示連結為正值,遇到黑/白方格,繼續輸出同一顏色。
• 紅色線:表示連結為負值,遇到黑/白方格,輸出反相/改變動作。
• A/B/X/Y...Left/Right 對應搖桿上的按鈕,也表示賦予馬力歐的「動作」。
• 輸入為瑪莉歐的位置。
•中間連結單一結點神經元。
  1. 起始神經網路,隨機挑選一動作+線條: 白方格+綠線+Right
  2. 這表示一直讓馬力歐向右前進,直到其中一條神經網路的紅線+動作(譬如:A鍵)遇到方格,改變成為馬力歐的下一個動作(A鍵)。
  3. 反覆 1, 2 步驟,目標是極大化分數。

詳細步驟請參看影片說明。

• 啟發本文源自:https://www.analyticsvidhya.com/learning-path-learn-machine-learning/

透過 Go 呼叫 Apple’s Metal API 教學

tri 推特網友 Demitri Shuralyov 創建一新的 Go package: 利用 Golang 呼叫 Metal APIs. 挺有趣的,一起來看看怎麼利用此 API 畫出三角圖案。

High-Level Overview

10 個步驟來畫三角形:

  1. Create a Metal device. (It needs to be available on the system.)
  2. Create a render pipeline state. (This includes vertex and fragment shaders.)
  3. Create a vertex buffer. (It will contain vertex data: the position and color of each triangle vertex.)
  4. Create an output texture. (To render into. We'll specify a storage mode, dimensions and pixel format.)
  5. Create a command buffer. (We'll encode all the commands for rendering a single frame into it.)
  6. Encode all render commands.
  7. Encode all blit commands. (This is to synchronize the texture from GPU memory into CPU-accessible memory.)
  8. Commit and wait. (Until all encoded commands have completed executing.)
  9. Read pixels from output texture. (Into an image.)
  10. Save the image. (As a PNG.)

詳細步驟解說請參照原文。

讀後摘要 DpLRN with TF 2/E – part 1

Supervised LRN

  • 使用 labeled/pre-defined training data
  • 缺點:problem of generalization
  • 典型 workflow:
    1. 切分資料為:training, development/validation, test sets
    2. 使用 training set 訓練模型
    3. 訓練時,使用 validation set 驗證 training set, 減輕 overfitting. 以及 regularization 模型
    4. 使用(模型未曾見過的) test set 評估模型效能
    5. Tuning model based on hyper-parameter optimization
    6. Deploy best model into a production-ready environment
  • 有「分類」以及「迴歸」兩種:依照輸出是否為連續值來判斷。
  • 分類問題中,要注意「Unbalanced (input) data」:
    * Little unbalanced: 60% for one class, 40% for the other class
    >> 此時需要將 data 隨機分為三份:50% training, 20% validation, 30% testing

    Pasted Graphic 2

Continue reading