Потери при обучении с глубокой сверткой не уменьшаются - PullRequest
0 голосов
/ 20 июня 2020

модель предназначена для двоичной классификации. это моя модель:

im_input= layers.Input(shape=[160,160,3])
x = layers.Conv2D(30,(3,3),strides=(2,2),padding='same')(im_input)
z = layers.DepthwiseConv2D((3,3),strides=2,padding='same',depth_multiplier=10)(im_input)
x = layers.ReLU()(x)
z = layers.ReLU()(z)
x = layers.Conv2D(60,(3,3),strides=(2,2),padding='same')(x)
z = layers.Conv2D(60,(3,3),strides=2,padding='same')(z)
x = layers.ReLU()(x)
z = layers.ReLU()(z)
x = layers.Concatenate()([x,z])
x = layers.Conv2D(120,(3,3),strides=2,padding='same')(x)
x = layers.ReLU()(x)
x = layers.Conv2D(200,(3,3),strides=2,padding='same')(x)
x = layers.ReLU()(x)
x = layers.Conv2D(400,(3,3),strides=1,padding='same')(x)
x = layers.ReLU()(x)
x = layers.Conv2D(900,(3,3),strides=1,padding='same')(x)
x = layers.Flatten()(x)
#x = layers.GlobalAveragePooling2D()(x)
x = layers.Dense(100,activation='relu')(x)
x = layers.Dropout(0.2)(x)
x = layers.Dense(20, activation='relu')(x)
out = layers.Dense(1,activation='sigmoid')(x)
smodel = tf.keras.Model(inputs=im_input, outputs=out, name="myModel2")
smodel.summary()

и это функция потерь:

cross_entropy = tf.keras.losses.BinaryCrossentropy()

оптимизатор:

optimizer = tf.keras.optimizers.SGD(0.001)

какие-нибудь предложения для оптимизатора?

почему у этой модели потери не уменьшаются? что-то не так с моделью? кто-нибудь, помогите пожалуйста ...

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Попробуйте изменить оптимизатор на Adam
Я не думаю, что с кодом что-то не так.
Также попробуйте изменить плотные слои - после сглаживания используйте плотный слой с 512 единицами, а затем непосредственно ваш окончательный выходной слой .
Вам не нужно так много плотных слоев.
Также вы можете опубликовать свое значение потерь, если оно два больших, то, возможно, что-то не так с вашими этикетками Train.

0 голосов
/ 20 июня 2020

Вместо SGD вам следует попробовать оптимизатор Adam.

Также в вашей сети увеличьте единицы измерения в слое Dense, так как это окончательное представление данных.

Наконец, количество фильтров должно быть меньше, оставьте его максимум 512.

Если ваш размер ввода небольшой, то также уменьшите количество слоев.

...