- 安装PyCharm
- 安装Pytorch
- 使用Pytorch实现反向传播
安装PyCharm
官网下载https://www.jetbrains.com/pycharm/download
选择Community的Download下载安装包然后打开
安装完成
1.找到自己对应的驱动版本
为511.69然后在下表找出对应的CUDA版本
2.在Pytorch官网
使用pip3下载
3.检查是否成功安装Pytorch,在Anaconda Prompt中执行命令,输出ture则为成功
详情可见06 Pytorch实现反向传播_蓝子娃娃的博客-CSDN博客_pytorch反向传播
import torch
x_data = [1.0, 2.0, 3.0] # 输入值
y_data = [2.0, 4.0, 6.0] # 输出值
w = torch.Tensor([1.0])
w.requires_grad = True
# 权重初始值(设置w的初始值),在grad求导时会将这里设置的初始值带入
# Tensor创建时默认不计算梯度,需要计算梯度设置为ture,自动记录求w的导
# y_predict = x * w
def forward(x):
return x * w
# 损失函数MES
def loss(x,y):
y_pred = forward(x)
return 1/2*torch.sum((y_pred - y) ** 2)
# 训练过程
# 第一步:先算损失Loss
# 第二步:backward,反向传播
# 第三步:梯度下降
for epoch in range(100): #训练100次
for x, y in zip(x_data,y_data) :
l = loss(x,y) # 前向传播,求Loss(损失函数),构建计算图
l.backward() # 反向传播,求出计算图中所有梯度存入w中
print("tgrad: ",x,y,w.grad.item())
# w.grad.data:获取梯度,用data计算,不会建立计算图,每次获取叠加到grad
w.data = w.data - 0.01 * w.grad.data # 修正一次w,learningrate=0.01(类似步长
w.grad.data.zero_() # 注意:将w中记录的梯度清零,消除本次计算记录,只保留新的w,开启下一次前向传播
print("pregress:", epoch, l.item()) # item取元素精度更高,得到的是loss
得到的结果(第100次):



