我正在学习theano,并试图用它来实现模块化ML工具。
我有一个简单的线性组合:
w = th.shared(np.ones([input_size, output_size], dtype=th.config.floatX),
name='W',
borrow=True)
x = T.dmatrix('x')
dot = T.dot(x, w)
但现在我对将dot
描述为theano函数的最佳方式感到困惑。我提出了两个功能:
dot1 = th.function([x], dot)
dot2 = th.function([], dot, givens={x: self.input_data})
其中input_data
是共享变量。
我的目标是在GPU上运行它,所以我想尽可能多地使用共享变量。
问题是,如果我使用dot1
函数,我不能在输入中使用共享变量。使用dot2
时,我使用它的唯一方法是读取numpy数组并不断用self.input_data
更新set_value()
。 (https://stackoverflow.com/a/17296524/2877599)
我的问题是:什么是最好的,dot1
或dot2
在gpus上运行?