PCA-Net icon indicating copy to clipboard operation
PCA-Net copied to clipboard

训练结果准确度无法提升问题请教?

Open YDS-FOREVER opened this issue 4 years ago • 4 comments

训练了53个epoch,测试准确度还是只有0.39%,第1个epoch的时候准确度就是0.4多。说明真个训练网络都没有学习到。想问下我们这工程是论文官方的工程代码吗?是否能给出我们训练的结果? 训练数据使用bird,过程数据如下:

epoch train_acc train_loss
3 0.3504 5.3009
4 0.317 5.3007
51 0.367 5.2985
52 0.4171 5.2985

我觉得好奇的是我们网络为啥会丢掉一些卷积层的输出信息,位置如下Bottleneck:

   out = self.conv1(x)
    out = self.bn1(out)
    out = self.relu(out)
    out1 = out

    out = self.conv2(out)
    out = self.bn2(out)
    out = self.relu(out)

    if self.use_bp:
       #丢掉了out的32以后的所有通道,请问这样子构建的吗,为啥不直接self.conv2就构建32通道输出?
        out2 = out[:, :32, :, :]
        bilinear_features = self.bilinear_pooling(out1, out2)
        return out1, out2, bilinear_features

YDS-FOREVER avatar Apr 25 '21 01:04 YDS-FOREVER

训练了53个epoch,测试准确度还是只有0.39%,第1个epoch的时候准确度就是0.4多。说明真个训练网络都没有学习到。想问下我们这工程是论文官方的工程代码吗?是否能给出我们训练的结果? 训练数据使用bird,过程数据如下:

epoch train_acc train_loss 3 0.3504 5.3009 4 0.317 5.3007 51 0.367 5.2985 52 0.4171 5.2985 我觉得好奇的是我们网络为啥会丢掉一些卷积层的输出信息,位置如下Bottleneck:

   out = self.conv1(x)
    out = self.bn1(out)
    out = self.relu(out)
    out1 = out

    out = self.conv2(out)
    out = self.bn2(out)
    out = self.relu(out)

    if self.use_bp:
       #丢掉了out的32以后的所有通道,请问这样子构建的吗,为啥不直接self.conv2就构建32通道输出?
        out2 = out[:, :32, :, :]
        bilinear_features = self.bilinear_pooling(out1, out2)
        return out1, out2, bilinear_features

1)经过多次重复实验,代码没有问题,请检查数据集或环境是否有误; 2)训练结果请参考论文; 3)这里输出前32通道是参考的其他代码,具体请见WS_DAN

TIan1874 avatar Jun 08 '21 11:06 TIan1874

训练了53个epoch,测试准确度还是只有0.39%,第1个epoch的时候准确度就是0.4多。说明真个训练网络都没有学习到。想问下我们这工程是论文官方的工程代码吗?是否能给出我们训练的结果? 训练数据使用bird,过程数据如下:

epoch train_acc train_loss 3 0.3504 5.3009 4 0.317 5.3007 51 0.367 5.2985 52 0.4171 5.2985 我觉得好奇的是我们网络为啥会丢掉一些卷积层的输出信息,位置如下Bottleneck:

   out = self.conv1(x)
    out = self.bn1(out)
    out = self.relu(out)
    out1 = out

    out = self.conv2(out)
    out = self.bn2(out)
    out = self.relu(out)

    if self.use_bp:
       #丢掉了out的32以后的所有通道,请问这样子构建的吗,为啥不直接self.conv2就构建32通道输出?
        out2 = out[:, :32, :, :]
        bilinear_features = self.bilinear_pooling(out1, out2)
        return out1, out2, bilinear_features

同样的情况,训练数据集是Cars,第一个epoch是0.6%,30个epoch时准确率0.83%损失6.12基本不变化了,也是感觉没学习到,数据集检查过没问题,也用这个数据集训练过其他代码,请问您的问题解决了么?

wangshouxu avatar Jan 28 '22 02:01 wangshouxu

训练了53个epoch,测试准确度还是只有0.39%,第1个epoch的时候准确度就是0.4多。说明真个训练网络都没有学习到。想问下我们这工程是论文官方的工程代码吗?是否能给出我们训练的结果? 训练数据使用bird,过程数据如下: epoch train_acc train_loss 3 0.3504 5.3009 4 0.317 5.3007 51 0.367 5.2985 52 0.4171 5.2985 我觉得好奇的是我们网络为啥会丢掉一些卷积层的输出信息,位置如下Bottleneck:

   out = self.conv1(x)
    out = self.bn1(out)
    out = self.relu(out)
    out1 = out

    out = self.conv2(out)
    out = self.bn2(out)
    out = self.relu(out)

    if self.use_bp:
       #丢掉了out的32以后的所有通道,请问这样子构建的吗,为啥不直接self.conv2就构建32通道输出?
        out2 = out[:, :32, :, :]
        bilinear_features = self.bilinear_pooling(out1, out2)
        return out1, out2, bilinear_features

同样的情况,训练数据集是Cars,第一个epoch是0.6%,30个epoch时准确率0.83%损失6.12基本不变化了,也是感觉没学习到,数据集检查过没问题,也用这个数据集训练过其他代码,请问您的问题解决了么?

1)经过多次重复实验,代码没有问题,请检查数据集或环境是否有误; 2)bird测试结果如下: epoch, test_acc,test_loss 0, 59.6479,2.4731 1, 75.5264,1.8175 2, 79.6686,1.5639 3, 82.4991,1.4433 4, 83.2758,1.3779 ... 91, 87.6079,0.9748 92, 88.2637,0.9728 93, 87.8840,0.9739

TIan1874 avatar Jan 28 '22 04:01 TIan1874

你好,我复现的时候准确率也是学习不上去,请问你解决了吗?

xiaoweidao avatar Apr 17 '22 06:04 xiaoweidao