【问题标题】:Do I need to make multiple instances of a neural network in PyTorch to test multiple loss functions?我是否需要在 PyTorch 中创建多个神经网络实例来测试多个损失函数?
【发布时间】:2018-11-05 21:30:04
【问题描述】:

我在 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

【问题讨论】:

    标签: python python-3.x neural-network pytorch loss-function


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 2018-07-25
      • 2011-02-14
      • 2021-02-20
      相关资源
      最近更新 更多