tensorflow2.0-自定义层

tensorflow2.0-自定义层

无参数的自定义层

无参数的自定义层可以使用:keras.layers.Lambda函数

customized_spftplus = keras.layers.Lambda(lambda x : tf.nn.softplus(x))
print(customized_spftplus([1.0,1.0,1.0,0.0,0.1,0.2]))
# tf.Tensor([1.3132616 1.3132616 1.3132616 0.6931472 0.7443967 0.7981388], shape=(6,), dtype=float32)

有参数的自定义层

有参数自定义层需要继承keras.layers.Layer类

	class CustomizedDenseLayer(keras.layers.Layer):
	'''
	 继承的时候必须有三个方法,__init__,build,call
	'''
	# 构造函数需要,继承父类的初始属性,这时候需要用到
	# super(CustomizedDenseLayer, self).__init__(**kwargs)
    def __init__(self, units, activation=None, **kwargs):
        self.units = units
        self.activation = keras.layers.Activation(activation)
        # 
        super(CustomizedDenseLayer, self).__init__(**kwargs)
    
    def build(self, input_shape):
    # 调用父类的方法,add_weight,添加weight
        self.kernel = self.add_weight(name='kernel',
                                      shape=(input_shape[1], self.units),
                                     initializer = 'uniform',
                                     trainable = True)
        self.bias = self.add_weight(name='bias',shape=(self.units,),
                                    initializer = 'zeros',
                                    trainable = True)
        super(CustomizedDenseLayer,self).build(input_shape)
    
    def call(self, x):
        return self.activation(x @ self.kernel + self.bias)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值