我是否需要在PyTorch中创建多个神经网络实例来测试多个损失函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是否需要在PyTorch中创建多个神经网络实例来测试多个损失函数?相关的知识,希望对你有一定的参考价值。

我在PyTorch中写了一个神经网络,我想在这个网络上比较两种不同损失函数的结果

我应该开始制作两个不同的网络实例,并像这样测试每个网络的一个丢失功能

network_w_loss_1 = ANN().cuda()
network_w_loss_2 = ANN().cuda()

crit_loss_1 = loss_1()
crit_loss_2 = loss_2()

opt_loss_1 = optim.SGD('params')
opt_loss_2 = optim.SGD('params')

for epoch in range(num_epochs):
    for i, dat in enumerate(data_loader):
        #unpack data
        opt_loss_1.zero_grad()
        opt_loss_2.zero_grad()
        output1 = network_w_loss_1('params')
        output2 = network_w_loss_2('params')
        los_1 = crit_loss_1(output1)
        los_2 = crit_loss_2(output2)
        los_1.backward()
        los_2.backward()
        opt_loss_1.step()
        opt_loss_2.step()

或者我可以逃脱这样做?

network = ANN().cuda()

crit_loss_1 = loss_1()
crit_loss_2 = loss_2()

opt = optim.SGD('params')

for epoch in range(num_epochs):
    for i, dat in enumerate(data_loader):
        #unpack data
        opt.zero_grad()
        output1 = network('params')
        output2 = network('params')
        los_1 = crit_loss_1(output1)
        los_2 = crit_loss_2(output2)
        los_1.backward()
        los_2.backward()
        opt.step()

我使用的是Python 3.6.5和PyTorch 0.4.0

答案

你必须做两个不同的实例。否则,您只是在两个损失之间交替训练一个网络(两个损失都会更新其参数)。

以上是关于我是否需要在PyTorch中创建多个神经网络实例来测试多个损失函数?的主要内容,如果未能解决你的问题,请参考以下文章

在 PyTorch 中创建具有多个通道的简单 1D CNN

循环在图表控件中创建多个系列

为啥在 Kivy 中创建方法时需要“实例”变量?

在vue中创建多个ueditor实例

在vue中创建多个ueditor实例

在 Android 上的 SQLite 中创建多个表