首页 > 解决方案 > 深度卷积训练损失没有减少

问题描述

该模型用于二进制分类。这是我的模型:

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)

对优化器有什么建议吗?

为什么这个模型损失没有减少?模型有问题吗?有人,请帮助...

标签: pythontensorflowdeep-learningneural-networkconv-neural-network

解决方案


尝试将优化器更改为 Adam
我认为代码没有任何问题。
还可以尝试更改密集层 - 在展平后使用具有 512 个单元的密集层,然后直接使用最终输出层。
你不需要那么多密集层。
您还可以发布您的损失值,如果它很大,那么您的火车标签可能有问题。


推荐阅读