首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras中使用numpy roll

在Keras中使用numpy roll
EN

Stack Overflow用户
提问于 2017-08-01 04:59:37
回答 1查看 566关注 0票数 0

我正在尝试在Keras中制作一个自定义正则化器,我需要能够滚动系数数组。

我知道这可能是不可能的,但是任何可以复制这种滚动功能的机制都会非常感谢。

代码语言:javascript
复制
```javascript

def call(self,x):

代码语言:javascript
复制
regularization = 0.
代码语言:javascript
复制
# Add components if they are given
代码语言:javascript
复制
if self.l1:
代码语言:javascript
复制
    # \lambda ||x||
代码语言:javascript
复制
    regularization += self.l1 * K.sum(K.abs(x))
代码语言:javascript
复制
if self.fuse:
代码语言:javascript
复制
    # \lambda \sum{ |x - x_+1| }
代码语言:javascript
复制
    regularization += self.fuse * K.sum(K.abs(x - np.roll(x, 1)))
代码语言:javascript
复制
if self.abs_fuse:
代码语言:javascript
复制
    # \lambda \sum{ ||x| - |x_+1|| }
代码语言:javascript
复制
    regularization += self.abs_fuse * K.sum(K.abs(K.abs(x) - K.abs(np.roll(x, 1))))
代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-01 12:22:18

考虑到x的形状是(m, 1),一种可能的解决方案是使用tile

代码语言:javascript
复制
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是一个一维向量,我猜开销不会太严重。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45425192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档