Python 具有示范架构的Pytorch CNN将学习,但准确性赢得了';增加
我的Pytork CNN运行和学习,但准确性没有提高。列车损失减少,但在列车集上进行测试时,具有随机精度。我在Keras中实现了相同的体系结构,我有90%以上的准确率。我基本上只是想知道我的结构中是否有明显的错误。这是:Python 具有示范架构的Pytorch CNN将学习,但准确性赢得了';增加,python,conv-neural-network,pytorch,Python,Conv Neural Network,Pytorch,我的Pytork CNN运行和学习,但准确性没有提高。列车损失减少,但在列车集上进行测试时,具有随机精度。我在Keras中实现了相同的体系结构,我有90%以上的准确率。我基本上只是想知道我的结构中是否有明显的错误。这是: def __init__(self): super().__init__() self.conv1 = nn.Conv2d(1, 16, 3) self.conv2 = nn.Conv2d(16, 32, 3)
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(1, 16, 3)
self.conv2 = nn.Conv2d(16, 32, 3)
self.conv3 = nn.Conv2d(32, 64, 3)
self.fc1 = nn.Linear(5*5*64, 1024)
self.fc2 = nn.Linear(1024, 2048)
self.fc3 = nn.Linear(2048, 1)
def forward(self, x):
x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
x = F.max_pool2d(F.relu(self.conv2(x)), (2, 2))
x = F.max_pool2d(F.relu(self.conv3(x)), (2, 2))
x = x.view(x.size(0), -1)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = F.dropout(x, 0.5)
x = F.sigmoid(self.fc3(x))
return x
loss_function=nn.BCELoss()确保您正在规范化输入数据。如果没有看到更多的代码,比如dataloader部分,以及您使用的数据集,可能很难发现是否有问题。您是否使用与keras相同的优化器和元参数?(具体来说,相同的学习率?)结构没有根本性的问题。问题可能出在其他地方。如果您在培训期间获得了良好的准确性,但在再次评估相同数据时,准确性较差,那么问题可能在于您在培训和测试期间的采样和预处理方式之间的差异。如果您发布更多的代码,我们可能会提供更多帮助。