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,:]) 问题是我无法直接访问可广播的维度。 关于我该如何做这些事情的任何想法?
答案 0 :(得分:0)
此代码未经测试但您可以创建一个大小等于批量大小的随机数向量,然后使用dimshuffle
添加可广播的维度:
bias=self._srng.uniform(input.shape[0]).dimshuffle(0, 'x', 'x', 'x')