我們有一個(gè)研究RCN算法的Q群:515743445墅垮,有興趣可以加入,一起研究和討論(雖然名字叫HTM耕漱。算色。。)
代碼不要下載github上第一頁(yè)搜到的那個(gè)螟够,那個(gè)windows用不了灾梦。
下載源碼
GitHub上給了另一個(gè),做給Windows用的妓笙,源碼下載地址https://github.com/davidleon/science_rcn
因?yàn)槭谴a是python 和 c++混寫(xiě)的若河,python文件識(shí)別不了它里面的c++文件。
就是dilation.py中的第二句話寞宫,要從dilation.h和 dilation.cc導(dǎo)入東西
import numpyas np
from _dilationimport max_filter1d, brute_max_filter1d
報(bào)錯(cuò):ImportError: No module named _dilation
怎么辦呢萧福?運(yùn)行代碼文件夾中的setup.py,這樣python 和 c++就能和諧相處了(代碼沒(méi)仔細(xì)看辈赋,不知道它干了什么)
但是直接用會(huì)出現(xiàn)問(wèn)題:
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
問(wèn)題1:缺少stdbool.h文件
看錯(cuò)誤提示:缺少stdbool.h文件鲫忍,官方還是很貼心的,給了你一個(gè)钥屈,就在那個(gè)文件夾中
把stdbool.h放入你的python環(huán)境中的include文件夾下悟民,我的是F:\Users\hasee\Anaconda3\envs\HTM\include
問(wèn)題2:C++文件有語(yǔ)法錯(cuò)誤
還有一個(gè)問(wèn)題:
python和C++和諧相處了篷就,但是你C++有語(yǔ)法錯(cuò)誤:創(chuàng)建數(shù)組使用未知大小的變量等射亏。
從技術(shù)上講:
這里出現(xiàn)的問(wèn)題是使用可變長(zhǎng)度數(shù)組。
雖然擴(kuò)展代碼在C99標(biāo)準(zhǔn)中有效竭业,但Visual C ++ for Python僅支持C89并且不接受這種類型的數(shù)組聲明智润,而gcc / g ++是此處使用的唯一編譯器選項(xiàng)。
所以要安裝個(gè)GCC編譯器
以下內(nèi)容參考:https://blog.csdn.net/altland/article/details/63252757
首先我們需要打開(kāi)網(wǎng)址: www.mingw.org
直接點(diǎn)擊右上方的 Download Installer 即可下載永品。
在打開(kāi)的新頁(yè)面會(huì)提示我們等待幾秒秒后將開(kāi)始下載。如果十多秒后也沒(méi)有反應(yīng)鼎姐,可以點(diǎn)擊進(jìn)度條下方的direct link手動(dòng)下載。
有人可能發(fā)現(xiàn)下載的安裝軟件相當(dāng)?shù)匦「瘢挥袔资甂炕桨。
這是因?yàn)槲覀兿螺d的只是一個(gè)包管理器,包管理器安裝后才能繼續(xù)安裝編譯器等組件肯腕。
注意献宫,整個(gè)安裝過(guò)程都是在線的,因此請(qǐng)不要斷開(kāi)網(wǎng)絡(luò)实撒。
首先打開(kāi)安裝程序姊途,按照提示涉瘾,以默認(rèn)選項(xiàng)進(jìn)行安裝即可。
一直默認(rèn)安裝直到如下
包管理器安裝完成后將彈出這個(gè)界面:
找到mingw32-gcc-g++捷兰,點(diǎn)擊Mark for Installation立叛。
然后點(diǎn)擊左上角的Installation菜單中的Apply changes選項(xiàng),然后管理器將開(kāi)始在線安裝或更新被選中的組件贡茅。
下面耐心等待程序的安裝秘蛇。
安裝完成后關(guān)閉包管理器,如果由于某種原因安裝未能成功顶考,在退出程序前程序?qū)⒔o予提示赁还,選擇review changes選項(xiàng)重新安裝即可。
下一步配置環(huán)境變量
打開(kāi)控制面板 -> 系統(tǒng) -> 高級(jí)系統(tǒng)設(shè)置 -> 高級(jí) -> 環(huán)境變量驹沿。
找到列表中的PATH選項(xiàng)艘策,選中后點(diǎn)擊編輯,在末尾添加
C:\MinGW\bin
點(diǎn)擊確定渊季,重啟電腦柬焕,完成環(huán)境變量的配置。
檢驗(yàn)是否安裝成功梭域,黑框框中輸入 g++ -v
運(yùn)行setup.py
用anaconda的黑框框斑举,進(jìn)入science_rcn-master文件夾下
小tips,windows指令:
1.進(jìn)入F盤(pán)——f:
2.進(jìn)入文件夾xx——cd xx
3.快速打出文件夾的名字——先打出首字母病涨,按 tab鍵
輸入:
python setup.py install
完成富玷,之后去pycharm運(yùn)行代碼run.py吧
問(wèn)題3:語(yǔ)法錯(cuò)誤
配置是配好了,但是還是有一些問(wèn)題既穆,我的是代碼顯示有語(yǔ)法錯(cuò)誤
instance method' object has no attribute 'getitem '
就是說(shuō)根本沒(méi)這樣的寫(xiě)法赎懦,語(yǔ)句寫(xiě)錯(cuò)了
將所有g(shù)raph.edges[n1,n2]['perturb_radius'] 改為 graph[n1][n2]['perturb_radius']就行了
(大概有3處幻工,learning好像有2個(gè)励两,inference好像有1個(gè),你可以設(shè)幾個(gè)斷點(diǎn)囊颅,Debug一下就能揪出它們了)