2016-02-09 41 views
1
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中创建一个自定义图层,它将图像矩阵移动一些随机偏差。我希望这个偏差对于某个图像是一个常数,但对于批次中的每一个图像都是不同的。如何将给定值的可广播张量添加到Theano中的另一个张量?

'input'是一个带形状的张量('x',3,32,32),其中'x'是可广播的尺寸,代表图像批量计数。上面的代码向“输入”添加了一个('x',3,32,32)随机数矩阵。但是,我希望这个数字对于每个图像都是一样的(bias [i,:,:,] = const) 并且只在不同图像之间随机选择(bias [i,:]!= bias [j ,:] ) 问题是我无法直接访问可广播的维度。 任何想法,我该怎么做这个东西?

回答

0

此代码是未经测试,但你可以创建随机数的向量,其大小等于批量大小,然后使用dimshuffle添加broadcastable尺寸:

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

谢谢,成功了! bias = self._srng.uniform((input.shape [0],1,1,1))。dimshuffle(0,'x','x','x') –

相关问题