Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我是否需要在PyTorch中创建多个神经网络实例来测试多个损失函数?_Python_Python 3.x_Neural Network_Pytorch_Loss Function - Fatal编程技术网

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

Python 我是否需要在PyTorch中创建多个神经网络实例来测试多个损失函数?,python,python-3.x,neural-network,pytorch,loss-function,Python,Python 3.x,Neural Network,Pytorch,Loss Function,我已经用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('par

我已经用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,您必须创建两个不同的实例。否则,您只需在两个损耗之间交替训练一个网络(两个损耗都会更新其参数)