我正在使用Theano在Linux机器上训练我的模型。该代码在CPU上运行良好,但是在同一台机器import re
with open('demo.csv', 'r') as f, open("Result_csv.csv", 'w+') as out:
for line in f:
if re.search('/tcp|/udp', line):
print(line)
out.write(line)
上切换回GPU时出错。
我发现从AttributeError: 'TensorVariable' object has no attribute 'get_value'
数组构造的参数之一不是共享变量,但是如果我在GPU上运行它则是普通的numpy
。但是,CPU中没有这样的问题。之前,我在CPU上遇到过同样的问题,我通过将numpy数组强制转换为相同的浮点类型TensorVariable
来解决此问题。但是我不知道如何解决这个问题。
配置
配置文件theano.config.floatX
如下所示:
~/.theanorc
我正在使用Python3,并且已经为Theano设置了GPU环境。
代码
[global]
floatX = float32
device = cuda
函数不是创建GPU数组共享变量,而是普通的张量变量。我使用的代码是:
theano.shared
输出
在GPU上:
type(self.one_matrix):self.one_matrix = theano.shared(
np.array(one_matrix,
dtype=theano.config.floatX),
name="OneMatrix") \
.astype(theano.config.floatX)
type(one_matrix):<class 'theano.tensor.var.TensorVariable'>
one_matrix.dtype:<class 'numpy.ndarray'>
我想知道如何从numpy数组创建共享变量。使该代码也可以在GPU上工作,我需要做些什么?任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
只需修改我的代码即可,因为它可以工作,尽管我不确定为什么。
self.one_matrix = theano.shared(
one_matrix,
name="OneMatrix") \
.astype(theano.config.floatX)