Я написал нейронную сеть в 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