theano共享变量在扫描函数中的形状错误

theano shared variable has wrong shape in scan function

我有一个形状为 (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)。为什么会这样?

谢谢。

作为

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

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

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