(HTM)nupic概览

层次时序记忆是numenta公司发布的一种人工智能算法,发布为nupic项目。

本文为nupic代码实现的研究笔记。

如果你对HTM感兴趣,我建立了一个群,我们共同学习交流。515743445。

阅读本文前请先阅读HTM白皮书,以对HTM理论有一个基本的了解。

 

Nupic的主要内容在src/nupic中

  1. 获取nupic文档:

在docs文件夹下的README.md文件中,nupic写明了生成nupic文档的两种方式

## Usage

* Install `nupic` in dev mode: `python setup.py develop –user`

* Install dev dependencies: `pip install -r requirements-dev.txt –user`

* Build the docs by running: `make html`

* Or instead, to build the docs and watch for changes in the code and `.rst` files, run:

“`

sphinx-autobuild  ${NUPIC}/docs/source  ${NUPIC}/docs/_build_html  \

    –watch ${NUPIC}/src  –poll  –open-browser

“`

使用该方法会生成一个build文件夹。打开该文件夹下的index.html.

  1. Nupic在逻辑上主要由三部分构成。分别是底层的algorithm api,中间的network api和高层的online prediction framework

文档提供了三种api的入门范例。

algorithm api的入门范例是docs/example/algo/complete-algo-example.py

该文件的逻辑顺序是:

  1. 使用encoder将data转化为sdr
  2. 使用sp提取sdr的模式表征
  3. 使用tm获得当前输入在上下文中的表示
  4. 使用一个分类器将tm的输出对应到输入

 

Network提供了一个网络层的api,主要方法是添加sp,tm,encoder,classifier等region,并使用link方法连接,最后使用run方法训练网络。

 

Opf抽象出一个model,直接使用model提供的方法进行训练。主要是create model ,feed data ,extract result 三个步骤。

 

  1. 在examples中,提供了三类api的使用范例,以及对sp,tm的测试。
  2. 在src/nupic/encoders中实现了一些编码器,将特定类型的输入编码为sdr,其核心方法是encodeIntoArray,以及供分类器使用的getBucketIndices和getBucketValues方法。主要包括标量,日期,坐标,类别等。
  3. Sdr_classifier分类器是一个单层的神经网络,将输入模式映射到类标签。
  4. Nupic提供了对sp,tm,network等进行序列化的方法。
  5. 部分核心、耗时方法在nupic.core中,使用c++实现

版权声明:本文为b_296884864原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/b_296884864/article/details/88536430