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

时间:2016-02-09 17:17:20

标签: python 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中创建一个自定义图层,它会移动图像矩阵以获得一些随机偏差。我希望这种偏差对于某个图像来说是一个常数,但对于批量中的每个其他图像都是不同的。

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

1 个答案:

答案 0 :(得分:0)

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

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