使用 Theano 沿特定维度添加张量

Adding tensors along certain dimensions with Theano

我想了解如何使用 dimshuffle 将噪声传播到 4 维张量。例如,4 维张量的形状为 (num_examples, 3, 32, 32),其中 3 对应于 32*32 图像的 r、g、b 分量。我想添加高斯噪声,但是我想向所有三个分量(即 r、g、b)添加相同的噪声,并且对于每个示例,噪声将是一个随机的 32*32 矩阵。

所以我必须分别添加维度 (num_examples, 3, 32, 32)(num_examples, 32, 32) 的两个张量。我一直无法弄清楚如何在第二个张量上使用 dimshuffle 以便它的最后两个维度变得可广播。

使用dimshuffle

x = T.tensor4() # Nx3x32x32
y = T.tensor3() # Nx32x32
z = y.dimshuffle(0, 'x', 1, 2) + x