【问题标题】:Keras with TensorFlow --- Adding regularizer on layerKeras with TensorFlow --- 在层上添加正则化器
【发布时间】:2020-04-30 00:52:25
【问题描述】:

代码需要对架构提出更多挑战,而且我也在研究自己的架构,所以我问这个问题,因为语义每天都在变化:现在的语义好吗?

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),  kernel_regularizer=regularizers.l2(w_l2),
                 input_shape=input_shape))
model.add(BatchNormalization())
model.add(Activation('sigmoid'))
model.add(Conv2D(64, (3, 3),  kernel_regularizer=regularizers.l2(w_l2)))
model.add(BatchNormalization())
model.add(Activation('sigmoid'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, kernel_regularizer=regularizers.l2(w_l2)))
model.add(BatchNormalization())
model.add(Activation('sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adam(),
              metrics=['accuracy'])
model.summary()

【问题讨论】:

  • 请注意,在 Stack Overflow 上,您应该在问题中包含错误消息和代码本身,而不是图像。图像通常难以阅读,内容无法复制以进行搜索或测试。

标签: tensorflow keras keras-layer


【解决方案1】:

第一个错误来自于您现在已经导入了必要的库。

根据 TensorFlow 2.0 的文档,添加 L2 正则化器的正确方法是:

import tensorflow as tf
tf.keras.regularizers.l2(l=0.01)

如果您使用普通的keras(我强烈建议您在tensorflow切换keras),您只需要省略'tf'。

实际上,应该是keras.regularizers.l2 而不是tf.keras.regularizers.l2

你上传的第二张图片没有报错;实际上,它显示了一个警告,表明您正在使用已弃用的函数,并且您应该在警告中使用建议的代码,而不是您定义代码的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 2017-08-26
    • 2020-11-26
    • 2023-03-12
    • 2017-07-31
    • 1970-01-01
    • 2021-12-07
    • 2021-09-06
    相关资源
    最近更新 更多