所以我试图学习如何使用Theano并专门用于神经网络。 我在Windows 10系统上,使用mingw64和安装页面中的所有其他所需文件(除了microsoft visual studio和cuda,因为我不打算使用我的GPU)。 一切似乎都有效,婴儿步骤"本教程的一部分工作正常。 但是,当我尝试运行以下代码时,我得到一些奇怪的结果 -
self.W = theano.shared(value=np.random.standard_normal((state_dim, 4*state_dim)) * np.sqrt(2 / in_dim), name='W', borrow=True)
print(theano.dot(self.W.get_value(), self.W.get_value().T)
出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\mingw64\WinPython-64bit-3.4.4.4Qt5\python-3.4.4.amd64\lib\site-packages\theano\__init__.py", line 172, in dot
(e0, e1))
NotImplementedError: ('Dot failed for the following reasons:', (None, None))
当我尝试在没有get_value()的情况下引用W,即 打印(theano.dot(self.W,self.W.T)) 我得到 dot.0 的返回值。
我错过了什么?
答案 0 :(得分:0)
You can't just print a theano operation. There are two alternatives to show the same result:
first, using theano.function
result = theano.dot(self.W, self.W.T)
f = theano.function([],result)
print f()
or using np.dot
result = numpy.dot(self.W.get_value(), self.W.get_value().T)
print result
答案 1 :(得分:0)
在python中你可以打印任何对象。所以print子句没问题。 问题是你只能在theano表达式中使用符号变量。您不能直接在theano表达式中使用值。 所以你的代码可以写成:
self.W = theano.shared(value=np.random.standard_normal((state_dim, 4*state_dim)) * np.sqrt(2 / in_dim), name='W', borrow=True)
print(theano.dot(self.W, self.W.T)
只需删除get_value()
功能。