Parameters 深度学习的损失分析

Parameters 深度学习的损失分析,parameters,deep-learning,pytorch,data-loss,Parameters,Deep Learning,Pytorch,Data Loss,我刚开始深入学习,我已经建立了一个图卷积网络。我使用了5次交叉验证。在绘制了平均列车损失(蓝色)和验证损失(橙色)之后,我得到了这个婴儿 如您所见,从验证损失的曲线趋势中,我的人际网络似乎学到了一些东西。(我猜是数据?GCN框架?学习率?) 你们能专门帮我找出漏洞吗? 我会很感激的!如果你不明白我的意思,请告诉我 类记分器(nn.Module): """ 三个conv_层和两个带辍学的fc_层 """ 定义初始化(自): 超级(记分员,自我)。\uuuuu初始 self.conv_layer1

我刚开始深入学习,我已经建立了一个图卷积网络。我使用了5次交叉验证。在绘制了平均
列车损失(蓝色)
验证损失(橙色)
之后,我得到了这个婴儿

如您所见,从验证损失的曲线趋势中,我的人际网络似乎学到了一些东西。(我猜是数据?GCN框架?学习率?)

你们能专门帮我找出漏洞吗?

我会很感激的!如果你不明白我的意思,请告诉我

类记分器(nn.Module):
"""
三个conv_层和两个带辍学的fc_层
"""
定义初始化(自):
超级(记分员,自我)。\uuuuu初始
self.conv_layer1=GraphConvNet(5,64)
self.conv_layer2=GraphConvNet(64128)
self.conv_layer3=GraphConvNet(128256)#(我已尝试删除conv_layer3)
self.fc_layer1=nn.Linear(256,128)
自下降层1=nn.下降层(0.5)
self.fc_layer2=nn.Linear(128,64)
自下降层2=nn.下降层(0.5)
self.out_layer=nn.Linear(64,1)
def前进(自身、正常圈速、专长):
h=自我转换层1(正常圈,专长)
h=F.泄漏的(h)
h=自转换层2(正常搭接,h)
h=F.泄漏的(h)
h=自转换层3(正常搭接,h)
h=F.泄漏的(h)
h=自我。fc_层1(h)
h=自降层1(h)
h=F.泄漏的(h)
h=自我。fc_层2(h)
h=自降层2(h)
h=F.泄漏的(h)
h=自输出层(h)
h=F.泄漏的(h)

下面是我的网络和参数:


#参数设置
学习率=0.001(我试过1e-1和1e-2)
重量衰减=1e-3(我试过1e-4)
纪元=500
批量大小=50(我试过30)
模型=记分器()
损失函数=nn.MSELoss()
optimizer=th.optim.Adam(model.parameters(),lr=学习率,权重衰减=权重衰减)

这正是训练和验证丢失应该做的事情。损失随着时间的推移而减少;这就是优化器要做的。列车损失在有效列车损失稳定或稳定后继续下降,表明模型在约100个历元后开始过度拟合。MSE 0.3对您的应用程序是好是坏完全取决于应用程序,但是是的,优化器正在优化

请查看此资源,了解如何解释损失曲线:


“从损失的曲线趋势来看,我的人际网络似乎学到了一些东西”-如果你能解释(非常详细地:)你为什么这么想,以获得更好的答案,这会有所帮助。除了你所看到的,你还期望看到什么?我看了同一张图表,在我看来,您的网络正在学习建模数据,并预测您试图预测的任何内容。

感谢您的精彩回复。“从validate_loss的曲线趋势来看,我的网络似乎学到了一些东西”(我的意思是,问题是validate_loss在早期急剧下降,在过度捕捞之后,validate_loss的增加应该远远超过这种平滑状态(尽管我做了一次平均操作)。通常情况下,验证损失应该以对数形式减少,并迅速增加?既然如此,嗯,你是说我的模型工作得很好吗?再次感谢你的web链接共享。实际上,它不是太合适了吗?@santa是的,过了一段时间它就太合适了。这是正常的-一些更强的正则化可能会有所帮助。@santa我认为你在做很多假设例如,“验证损失永远不会稳定”:)或“培训损失和验证损失将彼此靠近”,开始时,尝试一个具有已知性能的简单模型(MNIST上的示例网络-尝试培训时间比示例中更长,速度更快),看看损失曲线,真正了解它们的行为。我不知道你的数据或图形,但这些看起来像是非常正常的训练曲线。