【发布时间】:2017-09-03 22:58:19
【问题描述】:
我正在尝试在 Theano 中实现具有稀疏输入的自动编码器。
我让稀疏自动编码器与平方误差成本函数一起工作。但是,如果我想应用包含矩阵乘法的交叉熵错误,则会收到以下错误:
AsTensorError: ('Variable type field must be a TensorType.', SparseVariable{csr,float64}, Sparse[float64, csr])
我在http://nbviewer.ipython.org/urls/gist.githubusercontent.com/peterroelants/4946cdbf189c5e75f2b7/raw/2ee7d3e533a4a6ac2707a2ffa310b81a86e70afd/gistfile1.json 上传了一个说明问题的示例笔记本。
我将问题提炼为矩阵乘法cost = T.sum(x * T.log(z))。这在密集情况下有效 [参见单元格 2],但在稀疏情况下会出错 [参见单元格 3]。请注意,将稀疏情况 [单元格 3] 中的成本函数更改为平方误差 (cost = T.sum((x-z)**2)) 将产生有效结果。
谁能指出我做错了什么?并告诉我如何让具有交叉熵错误的稀疏输入自动编码器在 Theano 中工作?
【问题讨论】:
标签: python numpy scipy sparse-matrix theano