自定义损失函数和层次

添加自定义损失函数

def customizd_mse(y_true, y_pred):
    return tf.reduce_mean(tf.square(y_pred-y_true))


model = keras.models.Sequential([
    keras.layers.Dense(30, activation='relu',
                       input_shape=x_train.shape[1:]),
    keras.layers.Dense(1),
])
model.summary()


model.compile(loss=customizd_mse, optimizer="sgd",metrics = ["mean_squared_error"])
callbacks = [keras.callbacks.EarlyStopping(
    patience=5, min_delta=1e-2)]

history = model.fit(x_train_scaled, y_train,
                    validation_data = (x_valid_scaled, y_valid),
                    epochs = 100,
                    callbacks = callbacks)

手动添加自定义层次

class CustomizedDenseLayer(keras.layers.Layer):
    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):
        """构建所需要的参数"""
        # x*w+b. input_shape:[None,a] w:[a,b]out_shape:[None,b]
        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='zero',
                                    trainable= True)
        super(CustomizedDenseLayer, self).build(input_shape)
    def call(self,x):
        """完成正向计算"""
        return self.activation(x@self.kernel + self.bias)

model = keras.models.Sequential([
    CustomizedDenseLayer(30, activation='relu',
                         input_shape=x_train.shape[1:]),
    CustomizedDenseLayer(1),
    customized_softplus,
    # keras.layers.Dense(1,activation="softplus")
    # keras.layers.Dense(1),keras.layers.Activation('softplus')

])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值