TechBridge 技術共筆部落格

var topics = ['Web前後端', '行動網路', '機器人/物聯網', '數據分析', '產品設計', 'etc.']

Nengo AI 入門


前言

今天要跟大家介紹一個叫做 Nengo AI 的 Python 函式庫,這個函式庫主要提供的功能就是讓人可以建立分散式的 AI 系統,可以想像成更加龐大、功能也更強大的 AI。大家可以看一下介紹影片:

video

安裝

安裝的步驟滿簡單的,一行 pip install nengo 就搞定。

1
2
3
4
5
6
7
8
9
10
(C:\Users\rosindigo\Anaconda3\envs) C:\Users\rosindigo\PycharmProjects\nengo>pip install nengo
Collecting nengo
Using cached https://files.pythonhosted.org/packages/f7/ce/e314e1176bfbbe6c3b6cf4e8fa0620cafad8f8bad0
4203c55881e9cb2fb0/nengo-2.8.0-py2.py3-none-any.whl
Collecting numpy>=1.8 (from nengo)
Downloading https://files.pythonhosted.org/packages/2e/11/f006363050b24fb19a235e5efd219e7ac549398d531
110d80b8f2ba3a909/numpy-1.16.3-cp36-cp36m-win_amd64.whl (11.9MB)
|████████████████████████████████| 11.9MB 233kB/s
Installing collected packages: numpy, nengo
Successfully installed nengo-2.8.0 numpy-1.16.3

安裝完成之後,你可以先 import nengo 看看是不是可以成功:

1
2
import nengo
model = nengo.Network()

因為 nengo 除了 core 之外,還有不同的 module,如果也想要安裝的話,可以參考下面的 command template:

1
2
3
4
pip install nengo[optional] # Additional solvers and speedups
pip install nengo[docs] # For building docs
pip install nengo[tests] # For running the test suite
pip install nengo[all] # All of the above

簡單理解 Nengo 的架構

下面這張圖很清楚地展示了 Nengo 從 Model 層到 Hardware 層的各個 module,基本上你可以說只要用 Nengo,就可以開發出在各種硬體上執行的 AI 系統。

img

程式範例

接下來就讓我們看一個非常簡單的範例小程式(我就直接把說明寫在註解裡面啦):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import nengo
import numpy as np


if __name__ == "__main__":
# 創建一個新的 network
# 在 Nengo 中,任何 model 都是被包含在 Network 中
model = nengo.Network()

# 建立一個有 40 個 neuron 的 Nengo object - my_ensemble
# object 是 model 的一部分(你可以建多個 object)
# 用 with model 是為了讓 Nengo 知道這個 object 屬於哪個 model
with model:
my_ensemble = nengo.Ensemble(n_neurons=40, dimensions=1)

# sin_input_node 會輸出一個 sine 波訊號
sin_input_node = nengo.Node(output=np.sin)

# 將 sin_input_node 的輸出送給 my_ensemble
nengo.Connection(sin_input_node, my_ensemble)

# 一旦建立好 object,也指定了裡面的 data 要怎麼流動
# 這時候就可以用 Probe 來指定要收集哪邊的 data
my_probe = nengo.Probe(my_ensemble)

# 要模擬之前,要先用 model 建立一個 Simulator
sim = nengo.Simulator(model)

# 跑模擬,並印出模擬結果
sim.run(5.0)
print(sim.data[my_probe][-10:])

如果想要對 Neural Engineering Framework 有更深入的了解,可以看看這篇介紹 - A Technical Overview of the Neural Engineering Framework

總結

今天跟大家介紹了 Nengo 這個 AI 系統的開發框架,個人覺得這個框架的潛力還滿大的,有興趣的讀者可以參考延伸閱讀提供的更多教材,先學習建立複雜度更高的 model,再進一步做出自己想要的 model。

延伸閱讀

  1. Nengo Documentation
  2. NengoDL: Combining deep learning and neuromorphic modelling methods
  3. Biospaun: a large-scale behaving brain model with complex neurons

關於作者:
@pojenlai 演算法工程師,對機器人、電腦視覺和人工智慧有少許研究,正在學習用心體會事物的本質不斷進入學生心態改進

喜歡我們的文章嗎?歡迎分享按讚給予我們支持和鼓勵!





訂閱 TechBridge Weekly 技術週刊,每週發送最精華的技術開發、產品設計的資訊給您



TechBridge Weekly 技術週刊編輯團隊

TechBridge Weekly 技術週刊團隊是一群對用技術改變世界懷抱熱情的團隊。本技術共筆部落格初期專注於Web前後端、行動網路、機器人/物聯網、資料科學與產品設計等技術分享。This is TechBridge Weekly Team Tech Blog, which focus on web, mobile, robot, IoT, Data Science technology sharing.

關於我們 / 技術日報 / 技術週刊 / 粉絲專頁 / 訂閱RSS

留言討論