python - 深度卷积训练损失没有减少
问题描述
该模型用于二进制分类。这是我的模型:
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)
对优化器有什么建议吗?
为什么这个模型损失没有减少?模型有问题吗?有人,请帮助...
解决方案
尝试将优化器更改为 Adam
我认为代码没有任何问题。
还可以尝试更改密集层 - 在展平后使用具有 512 个单元的密集层,然后直接使用最终输出层。
你不需要那么多密集层。
您还可以发布您的损失值,如果它很大,那么您的火车标签可能有问题。
推荐阅读
- python - 脚本无法将记录添加到数据库
- r - 为列表中的每个数据帧调整方法 cor.test
- node.js - Https代理解码编码数据节点js
- python - 如何在 Python 中合并和求和字典值
- php - SyliusCmsPlugin 与 CKFinder
- symfony - 如何扩展 Shopware 6 插件控制器
- c# - 如何使用 serilog 作为引用包创建类库?
- python - 如何在asp.net Web Form的文本框中显示python程序的输出?
- android - 在暗模式下删除 React Native 中的文本输入下划线边框
- php - 使用php pdo在sqlite数据库中插入多个复选框的值