含ResNet模块的PTB-XL数据库ECG分类模型精度停滞问题求助
含ResNet模块的PTB-XL数据库ECG分类模型精度停滞问题求助
我正在尝试基于PTB-XL数据库实现ECG片段的分类任务,目前遇到了模型精度停滞的瓶颈,想请教大家的解决思路。
我使用的是自定义的ResNet结构模型,代码如下:
import torch import torch.nn as nn class ResNetBlock(nn.Module): def __init__(self, in_channels, out_channels): super().__init__() self.conv1 = nn.Conv1d(in_channels, out_channels, kernel_size=7, padding=3,stride=1) self.bn1 = nn.BatchNorm1d(out_channels) self.conv2 = nn.Conv1d(out_channels, out_channels, kernel_size=5, padding=2,stride=1) self.bn2 = nn.BatchNorm1d(out_channels) self.conv3 = nn.Conv1d(in_channels=out_channels,out_channels=out_channels,kernel_size=3,padding=1,stride=1) self.bn3 = nn.BatchNorm1d(out_channels) skip_layers = [] if in_channels != out_channels: skip_layers += [ nn.Conv1d(in_channels, out_channels, kernel_size=1, stride=1), nn.BatchNorm1d(out_channels) ] self.skip_bn = nn.BatchNorm1d(out_channels) self.skip = nn.Sequential(*skip_layers) self.relu = nn.ReLU(inplace=True) class Model(nn.Module): def __init__(self,in_channels,num_classes): super().__init__() self.block_sizes = [64,128,256] self.resnet_block1 = ResNetBlock(in_channels=in_channels,out_channels=self.block_sizes[0]) self.resnet_block2 = ResNetBlock(in_channels=self.block_sizes[0],out_channels=self.block_sizes[1]) self.resnet_block3 = ResNetBlock(in_channels=self.block_sizes[1],out_channels=self.block_sizes[2]) self.global_pool = nn.AdaptiveAvgPool1d(1) self.fc1 = nn.Linear(self.block_sizes[2], num_classes)
现在模型的结果让我非常困惑:训练精度一直卡在*47%左右,测试精度也维持在46%*上下,完全没有提升的趋势。我已经尝试了以下几种优化方法,但都没有效果:
- 在每个ResNet块之后添加
nn.Dropout(0.2),但模型性能没有任何改善 - 调整学习率,试过从0.01到0.00001之间的各种取值
- 更换batch size,试过32、64、128、256这些常见的数值
实在不知道该怎么突破这个瓶颈了,希望有经验的朋友能给我一些建议或思路,非常感谢!
内容来源于stack exchange
相关产品推荐
相关产品推荐

