Keras с TensorFlow --- Добавление регуляризатора на слой - PullRequest
0 голосов
/ 13 января 2020

Коду потребовалось больше трудностей для архитектуры, и я также работаю над своей собственной архитектурой, поэтому я спрашиваю об этом, так как семантика меняется каждый день: нормальная ли нынешняя символика?

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 Ответ

1 голос
/ 13 января 2020

Первая ошибка связана с тем, что вы сейчас импортировали необходимые библиотеки.

Согласно документации 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.

Второе загруженное вами изображение не выдает ошибку; на самом деле, он показывает предупреждение о том, что вы используете устаревшую функцию и вам следует использовать предложенный код в предупреждении, а не то, как вы его определили.

...