Nengo AI 入門


Posted by Po-Jen on 2019-05-10

前言

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

video

安裝

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

(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 看看是不是可以成功:

import nengo
model = nengo.Network()

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

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

程式範例

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

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 演算法工程師,對機器人、電腦視覺和人工智慧有少許研究,正在學習用心體會事物的本質不斷進入學生心態改進


#Nengo AI #Neural Network #Deep Learning









Related Posts

JavaScript函式(function)

JavaScript函式(function)

JavaScript 101 快速入門教學

JavaScript 101 快速入門教學

[05] JavaScript 入門 - 相等性、不等性

[05] JavaScript 入門 - 相等性、不等性

【單元測試的藝術】Chap 4: 使用模擬物件驗證互動

【單元測試的藝術】Chap 4: 使用模擬物件驗證互動

記一次軟體工程師面試心得

記一次軟體工程師面試心得

[ Day 05 ] 用 Puppeteer 來做自動化機器人吧 (四) : Dockerize 篇

[ Day 05 ] 用 Puppeteer 來做自動化機器人吧 (四) : Dockerize 篇



Newsletter




Comments