如何将具有给定值的可广播张量添加到 Theano 中的另一个张量


def get_output_for(self, input, **kwargs):
    bias=self._srng.uniform(input.shape)
    output=input+bias
    return theano.tensor.clip(output,0,1)   

我正在尝试在Theano/Lasagne中创建一个自定义层,该层会移动图像矩阵以获得一些随机偏差。我希望这种偏差对于某个图像是常数,但对于批处理中的每个其他图像是不同的。

"

input"是一个形状为("x",3,32,32)的张量,其中"x"是可广播维度,表示图像批次计数。上面的代码将随机数矩阵("x",3,32,32)添加到"input"中。但是,我希望每个图像的数字都相同(bias[i,:,:,:]=const)并且仅在不同的图像之间随机(bias[i,:]!=bias[j,:])问题是我无法直接访问可广播维度。关于我如何做这些事情的任何想法?

此代码未经测试,但您可以创建一个大小等于批大小的随机数向量,然后使用以下dimshuffle添加可广播维度:

bias=self._srng.uniform(input.shape[0]).dimshuffle(0, 'x', 'x', 'x')

最新更新