1.numpy和pytorch实现梯度下降法
2.设定初始值
import numpy as np
import torch
device = torch.device('cpu')
# 参数
batch_size, in_dim, hidden_dim, out_dim = 64, 1000, 100, 10
# 生成输入输出数据、初始化权重
## numpy
x_np = np.random.randn(batch_size, in_dim)
y_np = np.random.randn(batch_size, out_dim)
w1_np = np.random.randn(in_dim, hidden_dim)
w2_np = np.random.randn(hidden_dim, out_dim)
## pytorch
x_tc = torch.randn(batch_size, in_dim, device=device)
y_tc = torch.randn(batch_size, out_dim, device=device)
w1_tc = torch.randn(in_dim, hidden_dim, device=device, requires_grad=True)
w2_tc = torch.randn(out_dim, hidden_dim, device=device, requires_grad=True)
3.求取梯度
# 学习率
learning_rate = 1e-6
# 更新轮数
for i in range(500):
# 前向网络
## numpy
h = x_np.dot(w1_np)
h_relu = np.maximum(h