2
我試圖在Theano中實現一個帶有稀疏輸入的自編碼器。稀疏矩陣乘法的Theano梯度
我得到了稀疏自動編碼器與平方誤差成本函數一起工作。但是,如果我想申請一個交叉熵錯誤,其中包含矩陣乘法,我得到以下錯誤:
AsTensorError: ('Variable type field must be a TensorType.', SparseVariable{csr,float64}, Sparse[float64, csr])
我將問題解決到矩陣乘法cost = T.sum(x * T.log(z))
。這在密集的情況下工作[見單元格2],但在稀疏的情況下給出錯誤[請參閱單元格3]。請注意,將稀疏情況[單元格3]中的此成本函數更改爲平方錯誤(cost = T.sum((x-z)**2)
)將導致工作結果。
任何人都可以指出我做錯了什麼?並告訴我如何獲得具有交叉熵錯誤的稀疏輸入自動編碼器在Theano中工作?
如果我將'cost = T.sum(x * T.log(z))'更改爲'cost = theano.sparse.sp_sum(x * T.log(z))',那麼我仍然會得到以下錯誤:'AsTensorError:('變量類型字段必須是TensorType。',SparseVariable {csr,float64},Sparse [float64,csr])'。 我在以下筆記本所示的該: http://nbviewer.ipython.org/urls/gist.githubusercontent.com/peterroelants/22990100d2c2973e75dc/raw/f30f2921789bd837df8e3021a1c2f6503e1fc6cc/gistfile1.txt – Xochipilli 2014-11-24 15:45:22
這是固定在主Theano。感謝報告。 – nouiz 2014-11-27 16:43:12