上一篇终于把环境搭完了,这一把玩一下测试例子,将CNN应用到手写数字识别上,用mnist数据集

CUDA Test

在上一篇中,只提到了安装 CUDA 之后可以观察自己的显卡的能力,实际上CUDA还给了很多的例子供我们使用。

嘛,在我的电脑里,所有的例子是在文件夹 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5 当中。这里我使用了下 1_Utilities\bandwidthTest 这个例子用于观察其 IO 的效率。直接找到 *.sln 文件打开工程,然后编译运行即可,如图即为我的电脑的运行结果:

看着很吓人,几乎是 6Gb/s 的速度,不过转念一想,这个数字好熟悉啊!这不是某根线的带宽么,满速运转理所当然啊。

Theano on CUDA

通过看文档,可以大概知道 theano 的各种坏毛病,比如需要指定很多的环境参数。但是需要提前说明一点:

务必删干净临时文件,在这 C:\Users\%USERNAME%\AppData\Local\Theano 你会看到各种各样的小东西,嘛,直接删干净就行了。

最后是设置 theano 的运行环境了。文档中讲到有很多种设置方式,比如文件设置,或者 import os 通过 os 设置 THEANO_FLAG 的方法,后者更灵活一些。但是考虑到我基本不会瞎搞,所以就用了普通的配置文件配置。目前我的配置文件如下

# .theanorc
[blas]
ldflags =

[gcc]
cxxflags = -ID:\Anaconda2\MinGW

[cuda]
root=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5

[nvcc]
fastmath = True
flags = -LD:\Anaconda2\libs

[global]
floatX = float32
device = gpu0

再有就是这里的文件全名是 .theanorc,是不能通过新建文件夹搞出来的。正确的做法是 Win+R 直接打开 cmd,就到了个人文件夹,然后

echo off
cd.>.theanorc

用了一些微小的技巧,蟹蟹大家!

jupyter notebook

最后就是直接照抄代码上去跑结果就行了。嘛,他说的是

"""Trains a simple convnet on the MNIST dataset.
Gets to 99.25% test accuracy after 12 epochs
(there is still a lot of margin for parameter tuning).
16 seconds per epoch on a GRID K520 GPU."""

实际上我的渣电脑几乎是 130 s/epoch。原因不明。

嘛最终还是能搞出来一个好结果,我已经很开心了。附上链接

[model] [html] [ipynb]