Alexnet在Windows下的使用

      有个外国人也实现了这个东西,逻辑比较清楚,看不懂我的文章的话,移步http://personal.ie.cuhk.edu.hk/~xy012/others/install_cudaconvnet.html

   

写在前面

      前一阵子百度有个ICOME比赛,任务一火眼金睛主要内容就是对图像有人没人进行分类,师兄说CNN不错,于是用了Alex Krizhevsky的project,HomePage为https://code.google.com/p/cuda-convnet/

      不过文章的Code使用了Python+CUDA框架,在Linux下编译运行,我看作者在回复中说windows下也可以使用,就忍不住用VS编译了一下,一天搞定。

   

编译环境

  • Windows 7 x64
  • Visual Studio 2012
  • CUDA 5.5
  • Python 2.7 x64 
  • Pthread-win32
  • Intel(R) C++ Studio XE 2013 Update 4

   

环境搭建

      VS、CUDA、Intel编辑器直接安装即可,略过。Python2.7安装之后需要按照https://code.google.com/p/cuda-convnet/wiki/Compiling要求,安装对应库,略过。其中Numpy对应x64下载地址为:http://www.lfd.uci.edu/~gohlke/pythonlibs/Pthread下载之后另行下载x64的库,地址:https://code.google.com/p/libusb-winusb-wip/downloads/detail?name=pthread-win32_x64.zip&can=2&q=

      下载之后将文件放入pthread的Pre-built.2\lib文件夹下面。记得在Windows中设置对应路径。

%INTEL_DEV_REDIST%redist\intel64\compiler;%INTEL_DEV_REDIST%redist\ia32\compiler;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\libnvvp;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32\compiler;c:\python27;


这些都注意加入路径。

   

建立工程文件

工程文件下载地址:

http://download.csdn.net/detail/xuanwu_yan/6409455

流水记录一下改了哪些

  1. 建立CUDA5.5 project,删除kernel.cu(不知道为什么我的不能建立空CUDA project),
  2. 合并了include和src文件夹。将头文件和源文件分别放入两个分类器中。建立dummyinclude文件夹,新建cutil_inline.h,
    <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">Dummy Includes for cutil_inline.h
       Wei LI <kuantkid <at> gmail <dot> com>
     */
    #include <helper_cuda.h>
     
    #define cutilCheckMsg(a) getLastCudaError(a)
    #define cutGetMaxGflopsDeviceId() gpuGetMaxGflopsDeviceId()
     
    #define MIN(a,b) (a) < (b) ? (a) : (b)</blockquote>
  3. 添加x64编译器并设当前为Release x64模式。
  4. 选中全部.cu源文件,右键-属性-常规-项类型,改为CUDA C/C++。
  5. 然后项目属性-CUDA C/C++-Common-Target Machine Platform改为64-bit,Device-Code Generation改为自己显卡的计算能力。这时在.cu文件右键-属性-CUDA C/C++对应项也应该是64-bit和对应的计算能力了。
  6. 下面截图说明改属性页:(文字太多大笑

 

接下来就是修改文件中的内容了,Linux中include可以任意使用<>,VS在当前目录必须使用双引号"",这个就靠你们自己改了。也可以使用上面链接中文件。
编译生成了pyconvnet.pyd文件。还没完,依赖的dll还没有加入。使用depends软件可以看到pyconvnet.pyd存在两个黄叹号,即没有找到的依赖。找到mkl_core.dll,mkl_intel_thread.dll,pthreadVC2_x64.dll放入Release文件夹中就OK了。
cmd进入Release目录,输入python进入python命令行,输入import pyconvnet没有报错那就完成90%了。


进入cuda-convnet-read-only,将pyconvnet.pyd放入。进入cuda-convnet-read-only\bin目录,新建windows文件夹,将mkl_core.dll,mkl_intel_thread.dll,pthreadVC2_x64.dll拷入文件夹中,加入系统环境变量。


万事俱备,依照https://code.google.com/p/cuda-convnet/wiki/TrainingNet,我们输入命令

python convnet.py --data-path=I:\\cifar-10-py-colmajor --save-path=./tmp --test-range=6 --train-range=1-5 --layer-def=./example-layers/layers-19pct.cfg --layer-params=./example-layers/layer-params-19pct.cfg --data-provider=cifar --test-freq=13


哈哈,出结果啦~~如图:

   

后记

      这篇博客是写在落选入复赛后,我们团队只看见了http://2013.icome.org.cn/这个网站,没关注http://openresearch.baidu.com/,在第二个网站中说明了比赛要求也不知道,哎:任务一测试时候只能使用CPU,任务二不能用Matlab,我们团队都踩线了。通知我们延期两天任务一测试改成CPU版本再提交也可以,没有弄完。任务一在本地测试正确率99%,IDL给我们测试正确率为97.5%;任务二本地正确率为61%。引用学长在十一假期的话说,别管结果,咱至少努力过。深以为然,引以为鉴。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 87
    评论
评论 87
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值