import torch
import numpy as np
N, D_in, H, D_out = 64,1000,100,10
x = torch.randn(N,D_in)
y = torch.randn(N,D_out)
w1 = torch.randn(D_in, H,requires_grad = True)
w2 = torch.randn(H,D_out,requires_grad = True)
learning_rate = 1e-6
for t in range(500):
#forward pass
h = x.mm(w1) #矩阵乘法
h = h.clamp(min = 0)
y_pre = h.mm(w2)
loss = (y-y_pre).pow(2).sum()
loss.backward()
#print(w1.grad)
with torch.no_grad():
w1 -= ( learning_rate * w1.grad)
w2 -= (learning_rate * w2.grad)
w1.grad.zero_()
w2.grad.zero_()
print(w1,w2)
torch.nn
import torch
import torch.nn as nn
import numpy as np
N, D_in, H, D_out = 64,1000,100,10
x = torch.randn(N,D_in)
y = torch.randn(N,D_out)
model = torch.nn.Sequential(
torch.nn.Linear(D_in,H), # w1*x+b1
torch.nn