有关pytorch中梯度为None的情况 15C

一直在用现成的框架写东西,这几天有空心血来潮想自己写个简单的神经网络,结果不知道怎么回事backward到第二步的时候w1.grad和w2.grad都是None
求各位解答:

import torch
import numpy as np
N, D_in, H, D_out = 64, 1000, 100, 10
learning_rate = 1e-6
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)
w1 = torch.randn(D_in, H)
w2 = torch.randn(H, D_out)

learning_rate = 1e-6
for it in range(500):
    w1=w1.requires_grad_()
    w2=w2.requires_grad_()
    # Forward pass
    y_pred = x.mm(w1).clamp(min=0).mm(w2)
    # compute loss
    loss = (y_pred - y).pow(2).sum()  # computation graph
    print(it, loss.item())
    # Backward pass
    loss.backward()
    w1=(w1-learning_rate*w1.grad)
    w2=(w2-learning_rate*w2.grad)

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐