win10 上配置RCN网络(递归皮质网络)(python2.7)

我们有一个研究RCN算法的Q群:515743445,有兴趣可以加入,一起研究和讨论(虽然名字叫HTM。。。)

代码不要下载github上第一页搜到的那个,那个windows用不了。

下载源码

GitHub上给了另一个,做给Windows用的,源码下载地址https://github.com/davidleon/science_rcn

因为是代码是python 和 c++混写的,python文件识别不了它里面的c++文件。

就是dilation.py中的第二句话,要从dilation.h和 dilation.cc导入东西


import numpyas np

from _dilationimport max_filter1d, brute_max_filter1d

报错:ImportError: No module named _dilation

怎么办呢?运行代码文件夹中的setup.py,这样python 和 c++就能和谐相处了(代码没仔细看,不知道它干了什么)

但是直接用会出现问题:

image

science_rcn/dilation/dilation.cc(8) : fatal error C1083: Cannot open include file: 'stdbool.h': No such file or directory

error: command 'C:\Users\hasee\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe' failed with exit status 2

问题1:缺少stdbool.h文件

看错误提示:缺少stdbool.h文件,官方还是很贴心的,给了你一个,就在那个文件夹中

image

把stdbool.h放入你的python环境中的include文件夹下,我的是F:\Users\hasee\Anaconda3\envs\HTM\include

image

问题2:C++文件有语法错误

还有一个问题:

github论坛上别人的图,问题是一样的

python和C++和谐相处了,但是你C++有语法错误:创建数组使用未知大小的变量等。

从技术上讲:

这里出现的问题是使用可变长度数组。

虽然扩展代码在C99标准中有效,但Visual C ++ for Python仅支持C89并且不接受这种类型的数组声明,而gcc / g ++是此处使用的唯一编译器选项。

所以要安装个GCC编译器

以下内容参考:https://blog.csdn.net/altland/article/details/63252757

首先我们需要打开网址: www.mingw.org

直接点击右上方的 Download Installer 即可下载。

怕大家找不到,指示一下

在打开的新页面会提示我们等待几秒秒后将开始下载。如果十多秒后也没有反应,可以点击进度条下方的direct link手动下载。

有人可能发现下载的安装软件相当地小,只有几十K。

这是因为我们下载的只是一个包管理器,包管理器安装后才能继续安装编译器等组件。

注意,整个安装过程都是在线的,因此请不要断开网络。

首先打开安装程序,按照提示,以默认选项进行安装即可。

一直默认安装直到如下

包管理器安装完成后将弹出这个界面:

image

找到mingw32-gcc-g++,点击Mark for Installation。

然后点击左上角的Installation菜单中的Apply changes选项,然后管理器将开始在线安装或更新被选中的组件。

下面耐心等待程序的安装。

安装完成后关闭包管理器,如果由于某种原因安装未能成功,在退出程序前程序将给予提示,选择review changes选项重新安装即可。

下一步配置环境变量

打开控制面板 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量。

找到列表中的PATH选项,选中后点击编辑,在末尾添加

C:\MinGW\bin

点击确定,重启电脑,完成环境变量的配置。

检验是否安装成功,黑框框中输入 g++ -v

运行setup.py

用anaconda的黑框框,进入science_rcn-master文件夹下

小tips,windows指令:

1.进入F盘——f:

2.进入文件夹xx——cd xx

3.快速打出文件夹的名字——先打出首字母,按 tab键

输入:

python  setup.py install
image

完成,之后去pycharm运行代码run.py吧

问题3:语法错误

配置是配好了,但是还是有一些问题,我的是代码显示有语法错误

instance method' object has no attribute 'getitem '
就是说根本没这样的写法,语句写错了

将所有graph.edges[n1,n2]['perturb_radius'] 改为 graph[n1][n2]['perturb_radius']就行了
(大概有3处,learning好像有2个,inference好像有1个,你可以设几个断点,Debug一下就能揪出它们了)

你可能感兴趣的:(win10 上配置RCN网络(递归皮质网络)(python2.7))