美文网首页
Keras Layer自定义层

Keras Layer自定义层

作者: Matrix0 | 来源:发表于2020-08-21 10:55 被阅读0次
from keras import backend as K
from keras.engine.topology import Layer
import numpy as np

class MyLayer(Layer):

    def __init__(self, output_dim, **kwargs):
        self.output_dim = output_dim
        super(MyLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        # Create a trainable weight variable for this layer.
        self.kernel = self.add_weight(name='kernel', 
                                      shape=(input_shape[1], self.output_dim),
                                      initializer='uniform',
                                      trainable=True)
        super(MyLayer, self).build(input_shape)  # Be sure to call this somewhere!

    def call(self, x):
        return K.dot(x, self.kernel)

    def compute_output_shape(self, input_shape):
        return (input_shape[0], self.output_dim)
  • build(input_shape):这是定义权重的方法,可训练的权应该在这里被加入列表self.trainable_weights中。其他的属性还包括self.non_trainabe_weights(列表)和self.updates(需要更新的形如(tensor, new_tensor)的tuple的列表)。你可以参考BatchNormalization层的实现来学习如何使用上面两个属性。这个方法必须设置self.built = True,可通过调用super([layer],self).build()实现
  • call(x):这是定义层功能的方法,除非你希望你写的层支持masking,否则你只需要关心call的第一个参数:输入张量
  • compute_output_shape(input_shape):如果你的层修改了输入数据的shape,你应该在这里指定shape变化的方法,这个函数使得Keras可以做自动shape推断

参考keras文档

相关文章

  • Keras Layer自定义层

    build(input_shape):这是定义权重的方法,可训练的权应该在这里被加入列表self.trainabl...

  • 自定义层(06)

    通过对 tf.keras.layers.Layer 进行子类化并实现以下方法来创建自定义层: build:创建层的...

  • keras加载包含自定义层的模型

    keras load_model在加载包含自定义层时会出现unknown layer的错误 解决方法: 1.在自定...

  • Keras Layer自定义

    简单层实现 实现一个简单层需要首先继承 layers.Layer 类即可,如下是官方网站上的例子: 如上所示, 其...

  • Keras Tips

    Rename layer 参考:Keras - All layer names should be unique ...

  • keras入门(二)

    About keras layer introduction: https://keras.io/layers/a...

  • 10、模型概览与一个实例

    一、模型概览 #基本概念 #0Keras 有两个重要的概念: 模型(Model) 和 层(Layer) #1层将各...

  • Keras Lambda层陷阱

    作者: 梦里茶 Keras中的Layer和Tensor Keras的最小操作单位是Layer,每次操作的是整个ba...

  • yolov3代码涉及到的Keras.layer.Lambda

    Keras.layers.Lambda解释 将任意表达式封装为 Layer 对象。 如果只是想对流经该层的数据做个...

  • keras自定义层

    tf.keras官方文档建议我们为自定义层实现[init]、[build]和[call]方法。 build(inp...

网友评论

      本文标题:Keras Layer自定义层

      本文链接:https://www.haomeiwen.com/subject/jwcujktx.html