Keras与TensorFlow ---在层上添加正则化器

时间:2020-01-13 10:08:17

标签: tensorflow keras keras-layer

代码需要对体系结构提出更多挑战,而且我也在开发自己的体系结构,所以我问这个问题,因为语义每天都在变化:现在的语义还可以吗?

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()

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

第一个错误是由于您已经导入了必需的库。

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

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

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

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

您上传的第二张图片不会引发错误;实际上,它显示了一个警告,提示您正在使用不推荐使用的函数,并且应在警告中使用建议的代码,而不是如何定义代码。