theano共享变量在扫描功能中具有错误的形状

时间:2016-04-27 01:51:17

标签: python python-2.7 theano theano.scan

我有一个形状(1,500)的theano共享变量,但是当传递给扫描函数时,形状结果为(1,1,500)。示例代码段如下所示。

y_t1 = theano.shared(name='y_t1', value=np.zeros((1, 500), dtype=theano.config.floatX))

def forward(X, y_t1):
    return y_t1

(hyp), _ = theano.scan(fn=forward, sequences=X, outputs_info=[y_t1])

y_t1是用大小(1,500)创建的,并在函数“forward”之外将其形状报告为(1,500),但在“forward”内部它具有形状(1,1,500)。为什么会这样?

感谢。

1 个答案:

答案 0 :(得分:0)

将其传递给

(hyp), _ = theano.scan(fn=forward, sequences=X, outputs_info=y_t1)

它应该工作正常。 (我已删除了outputs_info中y_t1周围的括号)

说明:Theano将在=之后传入的任何内容转换为张量。因此,如果您传入一个列表,它首先会转换为该形状的张量。因此,当您在[y_t1]中传递时,您基本上会在输入中添加额外的维度。