我有一个形状(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)。为什么会这样?
感谢。
答案 0 :(得分:0)
将其传递给
(hyp), _ = theano.scan(fn=forward, sequences=X, outputs_info=y_t1)
它应该工作正常。 (我已删除了outputs_info中y_t1周围的括号)
说明:Theano将在=之后传入的任何内容转换为张量。因此,如果您传入一个列表,它首先会转换为该形状的张量。因此,当您在[y_t1]中传递时,您基本上会在输入中添加额外的维度。