torch.autograd.Function zeroes out (n-1) out of n incoming gradients for single input x and n outputs

mvp18: <p>In the following code snippet, I have tried to implement an autograd functional layer interior to a simple model architecture. The function takes a single input x and returns 3 outputs. The whole idea is to see how autograd operates in a multi-output setting. The function behaves as an identity function to the 3 outputs in the forward pass.<br>
I train the model for classification with a randomly initialised (input, target) pair for 10 epochs where the loss can be seen decreasing smoothly. However, when I try to visualize the 3 gradients (corresponding to the 3 outputs) during the backward pass, I find only the gradient corresponding to the last returned tensor has a non-zero value and this happens for any n (n&gt;1). All other gradients are zeroed out.</p>
<pre><code class="lang-auto">import numpy as np
import torch
import torch.optim as optim
import torch.nn as nn
from torch.autograd import Function
</code></pre>
<pre><code class="lang-auto">class Grad_MulOuts(Function):    
    @staticmethod
    def forward(ctx, x):
        input_ = x.clone()
        ctx.save_for_backward(input_)
        out1 = input_
        out2 = out1
        out3 = out2
        return out1, out2, out3

    @staticmethod
    def backward(ctx, *grad_outputs):
        input_, = ctx.saved_tensors
        grad_input1 = grad_outputs[0].clone()
        grad_input2 = grad_outputs[1].clone()
        grad_input3 = grad_outputs[2].clone()
        grad_out = grad_input1+grad_input2+grad_input3
        print('Grad 1:{}'.format(grad_input1))
        print('Grad 2:{}'.format(grad_input2)) 
        print('Grad 3:{}'.format(grad_input3))
        return grad_out
def grad_mulouts(x):
    return Grad_MulOuts.apply(x)

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.l1 = nn.Linear(1024, 100)
        self.classifiers = nn.ModuleList([nn.Linear(100, 1) for i in range(3)])
    def forward(self, x):
        x = self.l1(x)
        out={}
        out[0], out[1], out[2] = grad_mulouts(x)
        for i, cl in enumerate(self.classifiers):
            out[i] = cl(out[i])
        return out
</code></pre>
<pre><code class="lang-auto">X=torch.randn(100, 1024)
Y=torch.FloatTensor(np.random.choice([0, 1], size=(100,3), p=[1./3, 2./3]))
model=Model()
optimizer=optim.SGD(model.parameters(), lr=0.01, nesterov=True, momentum=0.9)
loss_fn=nn.BCELoss()
batch_size=10
for epoch in range(10):
    model.train()
    runningloss=0.0
    for i in range(0,100,batch_size):
        input_ = X[i:i+batch_size]
        target = Y[i:i+batch_size]
        optimizer.zero_grad()
        with torch.set_grad_enabled(True):
            out = model(input_)
            loss = loss_fn(torch.sigmoid(out[0]), target[:,0])+loss_fn(torch.sigmoid(out[1]), target[:,1])+\
                   loss_fn(torch.sigmoid(out[2]), target[:,2])
            runningloss+=loss.item()
            loss.backward()
            optimizer.step()
    print('Loss:{}'.format(runningloss/batch_size))
</code></pre>
<p>This is the code that can show the problem I mentioned above. I know with multiple outputs from a single node, gradients would get added up by default. But, if one wishes to combine the gradients in some other way, torch.autograd.Function might be the only option. But a behaviour as this would make that really difficult.<br>
Maybe, I am missing something. Any suggestions would be really helpful. Thanks in advance.</p>

mvp18: <p>Gradients of a particular batch look like this</p>
<pre><code class="lang-auto">Grad 1:tensor([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.]])
Grad 2:tensor([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
         0., 0., 0., 0.]])
Grad 3:tensor([[-1.3586e-03,  1.9681e-03, -4.3179e-04, -5.1918e-03,  6.9820e-04,
          2.8312e-04,  3.0201e-03, -5.0734e-03, -6.5113e-03, -1.4766e-03,
         -3.0992e-03,  4.3395e-03, -8.4746e-03,  1.5547e-03, -5.2731e-04,
         -8.2937e-03, -1.0365e-03,  6.0007e-03,  5.9962e-03,  5.4027e-03,
          3.7177e-03, -1.0314e-02,  1.7247e-03, -5.2684e-03,  1.7662e-03,
          4.2042e-03, -2.0689e-03, -9.1838e-04, -3.2428e-03,  4.2042e-03,
         -5.4066e-03, -1.8044e-03, -3.5744e-03,  9.5565e-04, -5.0991e-03,
          5.1848e-03, -1.0619e-03, -1.8345e-03,  7.5609e-03, -3.2650e-03,
         -1.4747e-03, -3.6568e-03,  4.5235e-03,  2.4891e-03,  2.5530e-03,
         -1.9959e-03, -6.0898e-03, -1.1561e-03, -3.1301e-03, -9.0586e-03,
          5.5762e-04, -2.7548e-03,  1.6089e-03, -1.0051e-03,  4.7193e-03,
          1.1995e-03,  9.0728e-03, -3.4268e-03,  3.1594e-03,  9.8276e-05,
         -1.0661e-02,  5.8076e-04, -1.6412e-03,  6.8148e-03,  8.3412e-06,
         -1.8723e-03,  6.0918e-03, -2.3971e-03, -4.5855e-04,  7.3301e-04,
          3.6755e-03,  5.0826e-03,  6.6938e-04, -2.7001e-03,  1.9763e-03,
          1.0505e-03, -9.5875e-03,  2.6190e-03,  3.3756e-03, -6.8430e-04,
          5.0566e-03,  1.2363e-03, -5.0281e-03,  1.6886e-03, -7.6061e-03,
          4.1825e-05,  6.8388e-03,  2.0005e-03, -3.4174e-04,  3.5960e-04,
          9.2378e-03, -3.4256e-03, -2.0924e-04,  6.0898e-03, -2.6284e-03,
          4.5707e-03,  3.0575e-03,  5.4239e-03, -5.8724e-03, -2.7568e-03],
        [ 6.3770e-03, -5.5363e-03,  1.3584e-02,  8.4986e-04, -1.9261e-03,
         -1.1082e-02,  5.9705e-03, -7.2376e-03,  1.3651e-03, -6.0638e-05,
          1.0448e-02, -1.2627e-02, -1.0028e-03,  3.3355e-03, -1.1400e-02,
          1.1287e-03, -8.8802e-03,  4.4190e-03,  1.0049e-03, -1.4726e-03,
          6.1058e-03,  7.7527e-03, -6.9956e-03, -3.8936e-03,  5.6612e-03,
          2.6966e-03,  1.7125e-03,  6.4220e-03,  6.2899e-04,  4.6535e-03,
         -1.4737e-03, -3.5190e-04,  2.8778e-03, -1.6614e-03,  1.1569e-02,
         -5.0805e-03,  9.1948e-03, -9.2609e-03,  1.2443e-03, -8.1833e-03,
          3.8894e-03, -2.7116e-03,  1.9798e-03,  3.1243e-03,  7.5754e-04,
          3.8088e-04, -2.4020e-03,  2.3146e-03, -3.7470e-03,  6.2404e-03,
         -5.9345e-03,  1.9054e-03,  7.9076e-03,  3.5931e-03,  4.6002e-03,
          9.1285e-03, -6.0162e-03,  3.6320e-03,  5.5218e-03,  9.5087e-03,
          2.9303e-03,  2.6478e-03,  1.3194e-02, -5.7833e-03,  4.6897e-03,
          9.4041e-03,  1.9775e-03,  3.9500e-03, -4.5774e-03,  3.7678e-03,
          6.0239e-03,  1.9462e-03,  6.5488e-03,  9.2360e-03, -4.4024e-03,
          1.0820e-03, -9.6100e-04, -6.0811e-03, -7.6674e-03, -6.3691e-03,
         -5.0302e-03, -4.8454e-03,  9.1627e-03,  1.5847e-03,  8.7716e-03,
          1.7063e-03, -1.7727e-03, -6.6151e-03,  2.7053e-03,  2.2402e-04,
         -2.4714e-03, -2.4182e-03,  1.1669e-02, -5.9995e-03, -2.4863e-03,
          1.5828e-06,  4.3092e-03, -5.5232e-03,  6.3367e-03,  7.8539e-03],
        [-4.3212e-03,  4.4985e-03, -5.6899e-03,  5.8356e-03,  6.7486e-04,
          6.4019e-03, -2.9193e-03,  1.1964e-02,  6.7943e-03,  3.6354e-03,
         -3.6212e-03,  3.0626e-03,  6.0198e-03,  3.1089e-03,  4.0747e-03,
          4.5993e-03,  6.4162e-03, -1.2054e-02, -8.1200e-03,  3.2065e-03,
         -1.4412e-03,  2.8263e-03,  1.1450e-03,  7.5485e-03, -6.1542e-03,
         -4.0428e-03, -4.8951e-03, -4.3468e-03,  5.6496e-03, -4.6291e-03,
          8.0079e-03, -5.5949e-03,  6.1118e-03,  1.0683e-03, -2.2932e-03,
          1.0427e-03, -4.6152e-03,  2.3424e-03, -9.4161e-03,  9.2203e-03,
         -6.7956e-03,  9.2553e-03, -1.6940e-03, -4.0189e-03,  2.1789e-03,
          3.4365e-04,  5.9806e-03,  8.1864e-04, -2.5172e-04,  3.6245e-03,
          2.2627e-03, -5.2719e-03, -5.3711e-03,  3.6015e-03, -2.4208e-03,
         -2.8221e-03, -1.5019e-03, -2.1552e-03, -1.1309e-02, -3.8853e-03,
          7.6483e-03, -2.8967e-03, -3.8619e-03, -3.4845e-03, -7.2928e-03,
         -4.6893e-03,  1.5771e-04,  4.5046e-03,  7.3986e-03, -1.9987e-04,
         -7.0709e-03, -6.3228e-03, -3.6854e-03, -1.8660e-03,  3.9889e-03,
         -2.0938e-04,  1.0277e-02,  2.4153e-03,  1.8851e-03, -1.4201e-04,
          3.3636e-03, -1.3963e-03, -1.7992e-03,  3.2598e-03,  9.7267e-04,
         -3.4915e-03, -5.7870e-03,  5.6956e-03, -3.0076e-03, -1.5184e-03,
         -4.1387e-03, -3.7749e-03, -4.8632e-03, -1.5574e-03, -3.1384e-03,
          1.3079e-03, -2.6505e-03, -3.0120e-03,  1.3980e-03, -5.2913e-03],
        [ 3.7996e-03, -3.8590e-03,  5.3261e-03, -5.5391e-03, -5.7478e-04,
         -5.8676e-03,  3.0380e-03, -1.1084e-02, -6.4849e-03, -3.2868e-03,
          3.1560e-03, -2.6209e-03, -6.1067e-03, -2.3972e-03, -3.9602e-03,
         -4.7906e-03, -5.9416e-03,  1.1160e-02,  7.6547e-03, -2.2448e-03,
          1.8435e-03, -3.2455e-03, -1.0484e-03, -7.1869e-03,  5.6806e-03,
          4.0155e-03,  4.0567e-03,  3.8694e-03, -5.1821e-03,  4.5884e-03,
         -7.5126e-03,  4.6150e-03, -5.5366e-03, -8.7723e-04,  1.8420e-03,
         -5.3045e-04,  4.1819e-03, -2.5316e-03,  8.9431e-03, -8.5653e-03,
          5.8310e-03, -8.4460e-03,  2.0020e-03,  3.8298e-03, -1.5815e-03,
         -4.9203e-04, -5.8714e-03, -7.4548e-04, -2.4224e-04, -3.8536e-03,
         -2.0961e-03,  4.3159e-03,  5.0681e-03, -3.0809e-03,  2.7395e-03,
          2.8733e-03,  2.0356e-03,  1.6223e-03,  1.0260e-02,  3.6862e-03,
         -7.6011e-03,  2.6469e-03,  3.6119e-03,  3.5135e-03,  6.4425e-03,
          4.1679e-03,  5.7235e-04, -3.9920e-03, -6.5769e-03,  3.8019e-04,
          6.6828e-03,  6.0444e-03,  3.4711e-03,  1.6447e-03, -3.3799e-03,
          3.2816e-04, -9.8873e-03, -2.0162e-03, -1.5356e-03, -1.7133e-04,
         -2.5403e-03,  1.1631e-03,  1.3403e-03, -2.5740e-03, -1.3301e-03,
          3.0696e-03,  5.6380e-03, -4.9237e-03,  2.6476e-03,  1.3527e-03,
          4.4463e-03,  2.8061e-03,  4.5711e-03,  1.7709e-03,  2.3395e-03,
         -6.4626e-04,  2.7527e-03,  2.9699e-03, -1.5991e-03,  4.5394e-03],
        [ 4.3418e-03, -4.7917e-03,  4.7755e-03, -5.0145e-03, -7.0623e-04,
         -5.7841e-03,  1.6853e-03, -1.0790e-02, -5.7539e-03, -3.5332e-03,
          3.6022e-03, -3.0903e-03, -4.1221e-03, -4.1580e-03, -3.0085e-03,
         -2.8681e-03, -5.6872e-03,  1.0949e-02,  7.0667e-03, -4.7701e-03,
         -1.1960e-04, -1.1359e-03, -9.3089e-04, -6.3238e-03,  5.5632e-03,
          2.9457e-03,  5.6726e-03,  4.2457e-03, -5.3150e-03,  3.3640e-03,
         -7.0525e-03,  6.5882e-03, -5.9755e-03, -1.2313e-03,  2.5793e-03,
         -1.9669e-03,  4.2678e-03, -1.0157e-03,  8.0218e-03, -8.2007e-03,
          7.3299e-03, -8.7394e-03,  3.9413e-04,  3.3356e-03, -3.1343e-03,
          1.2454e-04, -4.5686e-03, -8.3130e-04,  1.5336e-03, -2.1721e-03,
         -1.9442e-03,  6.2447e-03,  4.5081e-03, -4.0290e-03,  8.3821e-04,
          1.7217e-03, -1.5633e-04,  2.8580e-03,  1.0787e-02,  3.1288e-03,
         -5.7319e-03,  2.6880e-03,  3.1648e-03,  2.5757e-03,  7.3792e-03,
          4.5437e-03, -2.0355e-03, -4.6710e-03, -7.3847e-03, -3.9914e-04,
          6.0004e-03,  5.2618e-03,  3.0862e-03,  1.7271e-03, -4.3675e-03,
         -1.7683e-04, -8.4389e-03, -2.6501e-03, -2.1041e-03,  1.0448e-03,
         -4.4524e-03,  1.7161e-03,  2.2916e-03, -4.1636e-03,  2.8088e-05,
          3.5824e-03,  4.6194e-03, -5.9779e-03,  3.0510e-03,  1.5231e-03,
          2.2629e-03,  5.2833e-03,  4.0319e-03,  7.0770e-04,  4.3859e-03,
         -2.6518e-03,  1.5681e-03,  2.4107e-03, -6.3104e-04,  5.6068e-03],
        [ 2.5226e-03, -2.9753e-03,  2.9257e-03,  5.3618e-03, -1.0515e-03,
         -2.3121e-03, -1.9215e-03,  3.7672e-03,  6.7781e-03,  1.4754e-03,
          5.0165e-03, -6.6604e-03,  8.2984e-03, -9.2563e-04, -1.5690e-03,
          8.5075e-03, -5.8676e-04, -5.2151e-03, -5.8295e-03, -5.6583e-03,
         -2.5884e-03,  1.1745e-02, -3.0131e-03,  4.5663e-03, -7.3672e-04,
         -3.7134e-03,  2.3674e-03,  2.0912e-03,  3.3736e-03, -3.3533e-03,
          5.1535e-03,  1.7189e-03,  4.1224e-03, -1.2584e-03,  7.2258e-03,
         -6.1151e-03,  2.7466e-03,  1.2666e-04, -7.3523e-03,  1.7772e-03,
          2.1704e-03,  3.1808e-03, -4.1573e-03, -1.9211e-03, -2.4027e-03,
          2.0651e-03,  5.6576e-03,  1.5856e-03,  2.4323e-03,  1.0214e-02,
         -1.6475e-03,  3.0868e-03, -1.6151e-04,  1.6803e-03, -3.8704e-03,
          4.8155e-04, -1.0180e-02,  4.0876e-03, -2.1709e-03,  1.6483e-03,
          1.1215e-02, -9.9630e-05,  4.0675e-03, -7.8879e-03,  8.3557e-04,
          3.5946e-03, -5.7181e-03,  3.1396e-03, -3.6478e-04, -3.5740e-05,
         -2.5797e-03, -4.7370e-03,  5.3098e-04,  4.3994e-03, -2.7754e-03,
         -8.4973e-04,  9.4316e-03, -3.7330e-03, -4.7839e-03, -4.9526e-04,
         -5.9702e-03, -2.1358e-03,  6.7113e-03, -1.3828e-03,  9.2228e-03,
          2.6254e-04, -7.1774e-03, -3.2034e-03,  8.3204e-04, -3.2266e-04,
         -9.6974e-03,  2.9618e-03,  2.3519e-03, -7.1974e-03,  2.1551e-03,
         -4.5607e-03, -2.2652e-03, -6.4490e-03,  7.0422e-03,  4.1893e-03],
        [ 9.4384e-04, -2.7853e-03, -5.6887e-03, -2.1178e-03,  1.8975e-04,
          2.4028e-03, -5.9345e-03, -2.1777e-03, -2.2663e-03, -2.9056e-03,
         -1.9360e-03,  3.3380e-03,  3.5897e-03, -9.4100e-03,  6.8040e-03,
          3.0852e-03,  1.7960e-03,  3.9954e-03,  2.2597e-03, -9.4549e-03,
         -8.8898e-03,  1.2356e-03,  3.4215e-03,  5.1296e-04,  2.0765e-04,
         -2.6102e-03,  7.3018e-03,  3.8539e-04, -4.0696e-03, -3.8151e-03,
         -2.3696e-03,  9.9853e-03, -6.5426e-03, -9.1717e-04, -2.3401e-03,
         -2.6777e-03, -1.8865e-03,  8.5518e-03,  1.7857e-03,  1.5581e-04,
          6.8718e-03, -4.9381e-03, -5.3834e-03, -9.4412e-04, -6.8143e-03,
          1.6398e-03,  2.0949e-03, -1.9863e-03,  8.0098e-03,  1.5234e-04,
          2.3218e-03,  8.4561e-03, -2.9033e-03, -7.1420e-03, -7.3171e-03,
         -6.9957e-03, -3.1997e-03,  3.4286e-03,  5.4258e-03, -4.6087e-03,
          1.7663e-04,  4.2587e-04, -6.2062e-03,  1.9871e-03,  4.8770e-03,
         -9.9379e-04, -9.7741e-03, -6.9667e-03, -4.5711e-03, -4.4573e-03,
         -1.3200e-03,  6.8767e-05, -2.5882e-03, -3.5240e-03, -3.2692e-03,
         -2.1225e-03, -6.9269e-04, -2.9165e-04,  1.0733e-03,  7.4794e-03,
         -5.6342e-03,  5.2092e-03, -6.4682e-04, -8.0049e-03, -7.0993e-04,
          2.8331e-03,  9.4162e-04, -3.3153e-03,  1.6600e-03,  1.3319e-03,
         -3.5079e-03,  1.1685e-02, -5.1204e-03,  5.6157e-04,  9.9236e-03,
         -7.4054e-03, -4.6556e-03,  2.8276e-03, -9.6203e-04,  2.4677e-03],
        [-5.7221e-03,  4.7734e-03, -1.3031e-02, -1.7509e-03,  1.8372e-03,
          1.0284e-02, -5.8296e-03,  5.4695e-03, -2.4040e-03, -5.7585e-04,
         -1.0013e-02,  1.2330e-02,  3.3722e-04, -4.1937e-03,  1.1127e-02,
         -1.6167e-03,  8.0578e-03, -2.5607e-03,  2.2219e-04,  5.8744e-04,
         -6.3058e-03, -8.0664e-03,  6.9801e-03,  2.8673e-03, -4.7895e-03,
         -2.2541e-03, -6.9397e-04, -5.7894e-03, -1.5957e-03, -4.1815e-03,
          2.5587e-04,  1.5867e-03, -4.0178e-03,  1.4675e-03, -1.1334e-02,
          4.8001e-03, -8.6242e-03,  9.3134e-03,  1.4004e-04,  6.8996e-03,
         -2.6237e-03,  1.1994e-03, -1.9917e-03, -2.6066e-03, -1.3730e-03,
         -3.5112e-04,  1.6690e-03, -2.5143e-03,  4.1452e-03, -6.7182e-03,
          5.7163e-03, -7.8085e-04, -7.2831e-03, -4.4131e-03, -4.5956e-03,
         -9.0428e-03,  6.0601e-03, -3.1667e-03, -3.6970e-03, -9.1646e-03,
         -3.9696e-03, -2.2223e-03, -1.2918e-02,  6.3423e-03, -3.4462e-03,
         -8.7813e-03, -2.4489e-03, -4.8856e-03,  3.3338e-03, -3.9385e-03,
         -5.0959e-03, -1.0665e-03, -6.1454e-03, -9.1205e-03,  3.6899e-03,
         -1.1492e-03, -4.9058e-04,  5.7200e-03,  7.4391e-03,  6.7212e-03,
          4.2925e-03,  5.2685e-03, -8.9228e-03, -2.4026e-03, -8.9178e-03,
         -1.0891e-03,  2.6102e-03,  5.6598e-03, -2.2070e-03,  4.7801e-05,
          2.8731e-03,  3.4762e-03, -1.1209e-02,  6.2260e-03,  3.3744e-03,
         -5.2620e-04, -4.1499e-03,  6.0567e-03, -6.5591e-03, -6.9908e-03],
        [ 4.1734e-03, -4.5497e-03,  4.7241e-03, -5.5679e-03, -6.2668e-04,
         -5.7378e-03,  2.0286e-03, -1.1309e-02, -6.4508e-03, -3.6777e-03,
          3.2500e-03, -2.6056e-03, -5.0566e-03, -3.9484e-03, -3.0725e-03,
         -3.7858e-03, -5.7863e-03,  1.1566e-02,  7.7018e-03, -4.1311e-03,
          3.1453e-04, -2.2796e-03, -7.4426e-04, -6.8873e-03,  5.7390e-03,
          3.4080e-03,  5.4055e-03,  4.1277e-03, -5.6464e-03,  3.8277e-03,
         -7.6219e-03,  6.3408e-03, -6.3355e-03, -1.1187e-03,  2.0097e-03,
         -1.3780e-03,  4.1392e-03, -1.2360e-03,  8.8283e-03, -8.5343e-03,
          7.1239e-03, -9.1025e-03,  9.0756e-04,  3.6023e-03, -2.8236e-03,
         -1.0133e-04, -5.2333e-03, -9.5196e-04,  1.1617e-03, -3.1702e-03,
         -1.8809e-03,  5.8967e-03,  4.6775e-03, -4.1093e-03,  1.3764e-03,
          1.8653e-03,  8.5884e-04,  2.4594e-03,  1.1087e-02,  3.1395e-03,
         -6.8953e-03,  2.7419e-03,  2.9861e-03,  3.3183e-03,  7.3424e-03,
          4.3221e-03, -1.3289e-03, -4.9039e-03, -7.3985e-03, -3.0580e-04,
          6.3902e-03,  5.8071e-03,  3.1557e-03,  1.4296e-03, -4.1248e-03,
         -5.4577e-05, -9.4715e-03, -2.3493e-03, -1.7245e-03,  9.4740e-04,
         -3.8620e-03,  1.8349e-03,  1.7269e-03, -3.9424e-03, -8.1456e-04,
          3.5676e-03,  5.3598e-03, -5.7267e-03,  2.9983e-03,  1.5545e-03,
          3.2885e-03,  4.8566e-03,  4.0065e-03,  1.3798e-03,  4.0550e-03,
         -2.1175e-03,  1.9129e-03,  2.9974e-03, -1.2783e-03,  5.2750e-03],
        [-2.8168e-03,  3.3098e-03, -2.0045e-03,  6.3698e-03,  1.7596e-04,
          3.5616e-03, -1.1563e-03,  1.0561e-02,  7.5074e-03,  3.8837e-03,
         -8.7182e-04, -3.5358e-04,  5.8031e-03,  4.5448e-03,  8.6321e-04,
          4.9240e-03,  4.1923e-03, -1.1491e-02, -8.2475e-03,  3.3639e-03,
          5.4715e-04,  4.9415e-03, -8.3973e-04,  6.7562e-03, -4.8730e-03,
         -3.3477e-03, -4.9499e-03, -2.8056e-03,  6.2081e-03, -3.3770e-03,
          8.0112e-03, -6.3498e-03,  7.4014e-03,  7.0516e-04,  8.2201e-04,
         -1.5344e-04, -2.2384e-03, -4.4059e-04, -9.5044e-03,  7.3589e-03,
         -6.3176e-03,  9.0911e-03, -9.7824e-04, -3.2854e-03,  2.7733e-03,
          3.8221e-04,  5.4576e-03,  1.5577e-03, -1.6304e-03,  5.4144e-03,
          6.5211e-04, -5.3419e-03, -3.3185e-03,  5.0195e-03, -9.4225e-04,
         -1.6338e-04, -3.0153e-03, -1.4206e-03, -1.0491e-02, -1.2731e-03,
          8.6976e-03, -2.3132e-03, -1.9118e-04, -5.2458e-03, -6.5270e-03,
         -2.3004e-03,  1.1416e-03,  6.0423e-03,  6.6525e-03,  1.0045e-03,
         -5.6554e-03, -6.0334e-03, -1.9497e-03,  6.9593e-04,  3.1070e-03,
          1.6982e-04,  1.0422e-02,  8.9138e-04, -1.4441e-04, -2.1926e-03,
          2.4005e-03, -2.9805e-03,  6.1310e-04,  4.1689e-03,  3.3830e-03,
         -3.2918e-03, -6.5119e-03,  4.2862e-03, -2.4696e-03, -1.5745e-03,
         -4.7859e-03, -5.0946e-03, -1.6856e-03, -3.2416e-03, -4.3722e-03,
          1.6964e-03, -1.3804e-03, -4.7256e-03,  3.1849e-03, -3.4975e-03]])
</code></pre>

mvp18: <p>Loss varies with epochs like this.</p>
<pre><code class="lang-auto">Loss:2.0544769048690794
Loss:0.6927875459194184
Loss:0.15503601282835006
Loss:0.043137667886912825
Loss:0.020370384491980077
Loss:0.013511684630066157
Loss:0.010588872153311968
Loss:0.008972734585404396
Loss:0.007898936001583933
Loss:0.00709811644628644
</code></pre>

ptrblck: <p>I assume the gradients for <code>out1</code> and <code>out2</code> are not calculated, as they both reference to <code>out3</code>.<br>
If you add a <code>clone()</code> operation to <code>out2 = out1.clone()</code> and <code>out3</code>, they will be treated differently.<br>
Probably related to <a href="https://discuss.pytorch.org/t/backward-in-custom-layer-is-not-called/47382/2">this post</a>.</p>

mvp18: <p>Thanks a lot, man. That solves it.</p>