我正在尝试在Keras中制作一个自定义正则化器,我需要能够滚动系数数组。
我知道这可能是不可能的,但是任何可以复制这种滚动功能的机制都会非常感谢。
```javascriptdef call(self,x):
regularization = 0.# Add components if they are givenif self.l1: # \lambda ||x|| regularization += self.l1 * K.sum(K.abs(x))if self.fuse: # \lambda \sum{ |x - x_+1| } regularization += self.fuse * K.sum(K.abs(x - np.roll(x, 1)))if self.abs_fuse: # \lambda \sum{ ||x| - |x_+1|| } regularization += self.abs_fuse * K.sum(K.abs(K.abs(x) - K.abs(np.roll(x, 1))))发布于 2017-08-01 12:22:18
考虑到x的形状是(m, 1),一种可能的解决方案是使用tile
def roll_reg(x):
length = K.int_shape(x)[0]
x_tile = K.tile(x, [2, 1])
x_roll = x_tile[length - 1:-1]
return K.sum(K.abs(x - x_roll))这将导致一些额外的内存使用,但如果x是一个一维向量,我猜开销不会太严重。
https://stackoverflow.com/questions/45425192
复制相似问题