Keras 自定义简单的层

Keras 自定义简单的层


由于网络结构的需要,需要增添一个归一化以及尺度变换操作:
类似于:

这项操作不涉及到权重等参数的变化,只是简单地对上一层的输出进行l2归一化以及尺度变化,因此可以不需要使用复杂的继承层类来实现,但对于涉及参数变化的处理,还是需要类似于activation等layer来构造。这里目前只介绍使用Lambda来构造自己的层操作。

Lambda层

有些类似于python中的lambda函数一样,构造一个处理函数即可。
官方例子:
在这里插入图片描述
可以看到实现的是一个平方操作。
下面实现上述l2归一化以及尺度变换操作:
假设上一层是全连接层:

x_fc = Dense(1024, activation='relu', name='fc1024')(x_fc)

对这层对输出进行处理:

# l2 norm and scale
def _l2norm_scale(inputs, scale_value):
    scale_a = K.cast_to_floatx(scale_value)
    l2_norm = K.l2_normalize(inputs)
    return scale_a * l2_norm

x_newfc = Lambda(_l2norm_scale, name='l2norm_scale')(x_newfc)

上述就完成了整个操作过程

参考

发布了82 篇原创文章 · 获赞 82 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/uncle_ll/article/details/86722255