2016-10-19 8 views
0

私はTheanoを使用する方法を学び、具体的にはニューラルネットワークに使用しようとしています。 私はWindows 10システムでmingw64と、インストールページの残りのすべてのファイルを使用しています(私のGPUを使用するつもりはないので、Microsoft Visual StudioとCudaは例外です)。 すべてがうまくいくようで、チュートリアルの「ベビー・ステップ」の部分がうまく機能しました。 私は次のコードを実行しようとすると、しかし、私はいくつかの奇妙な結果を得る -奇妙な結果を返す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.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を参照しようとすると)つまり、 print(theano.dot(self.W、self.WT)) 戻り値はです。ドットはです。

私には何が欠けていますか?

答えて

0

テアノ操作だけでは印刷できません。

まず、theano.function

result = theano.dot(self.W, self.W.T) 
f = theano.function([],result) 
print f() 

を使用するか、任意のオブジェクトを印刷することができ、あなたのpythonでnp.dot

result = numpy.dot(self.W.get_value(), self.W.get_value().T) 
print result 
0

使用:同じ結果を表示するには、2つの選択肢があります。したがって、print節はOKです。 問題は、theano式でシンボリック変数のみを使用できることです。あなたはtheano式で直接値を使うことはできません。 だからあなたのコードは以下のように書くことができるだけでget_value()機能を削除

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)