我在Windows机器上安装了Theano,并按照配置instructions。
我将以下.theanorc.txt文件放在C:\ Users \ my_username文件夹中:
#!sh
[global]
device = gpu
floatX = float32
[nvcc]
fastmath = True
# flags=-m32 # we have this hard coded for now
[blas]
ldflags =
# ldflags = -lopenblas # placeholder for openblas support
我试图运行测试,但还没有设法在GPU上运行它。我猜不会读取.theanorc.txt中的值,因为我添加了行print config.device并输出" cpu"。
以下是基本测试脚本和输出:
from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time
print config.device
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print f.maker.fgraph.toposort()
t0 = time.time()
for i in xrange(iters):
r = f()
t1 = time.time()
print 'Looping %d times took' % iters, t1 - t0, 'seconds'
print 'Result is', r
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
print 'Used the cpu'
else:
print 'Used the gpu'
输出:
pydev debugger: starting (pid: 9564)
cpu
[Elemwise{exp,no_inplace}(<TensorType(float64, vector)>)]
Looping 1000 times took 10.0310001373 seconds
Result is [ 1.23178032 1.61879341 1.52278065 ..., 2.20771815 2.29967753
1.62323285]
Used the cpu
我已经成功安装了CUDA Toolkit但是还没有设法安装pyCUDA。我猜Theano应该在没有安装pyCUDA的情况下工作。
如果有人能帮助解决这个问题,我将非常感激。我已按照these条说明进行操作,但不知道为什么程序中的配置值与.theanorc.txt文件中的值不匹配。
答案 0 :(得分:5)
与几页上所说的相反,我的安装(Windows 10,Python 2.7,Theano 0.10.0.dev1)不会解释我的用户个人资料文件夹中.theanorc.txt
文件中的配置说明,但会读取.theanorc
个文件。
如果您在创建具有该名称样式的文件时遇到问题,请在终端上使用以下命令:
cd %USERPROFILE%
type NUL > .theanorc
酱:http://ankivil.com/making-theano-faster-with-cudnn-and-cnmem-on-windows-10/
答案 1 :(得分:4)
你是对的,Theano不需要PyCUDA。
奇怪的是,Theano不会读取您的配置文件。读取的确切路径是这样的。只需在Python中运行它,您就会看到它放在哪里:
os.path.expanduser('~/.theanorc.txt')
答案 2 :(得分:2)
尝试更改.theanorc.txt中的内容,由Theano网站(http://deeplearning.net/software/theano/install_windows.html)指示。需要根据您的安装相应地更改路径。
<!-- in my*-spring.xml -->
<bean id="variantValueCategoryVoidInterceptorMapping" class="de.hybris.platform.servicelayer.interceptor.impl.InterceptorMapping">
<property name="interceptor" ref="VoidInterceptor"/>
<property name="typeCode" value="VariantValueCategory"/>
<property name="replacedInterceptors" ref="variantCategoryValidateInterceptor"/>
</bean>