安装并配置pycharm,参考链接PyCharm 安装教程
(由于安装完成后不小心重启电脑,博客也没有保存导致安装流程截图丢失)
(这里提醒大家写博客一定顺手保存)
如果我们之前没有安装python解释器的话,先去官网下载安装
下载python解释器
根据电脑所需版本号下载安装
安装完成后添加python到环境变量并查看能否使用
查看驱动版本
版本后面就是对应的驱动版本号,查看对应cuda
pytorch官网
在终端跑对应命令
若官网给的命令不成功或者很慢的话可以把pip3修改为pip或者修改为国内镜像源
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 -i https://mirrors.aliyun.com/pypi/simple/
这里换的是阿里镜像。参考pip换源
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
# 损失函数,return激活函数后得到的
def loss(x,y):
y_pred = forward(x)
return (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
运行结果
*** 如果错误提示torch不存在,可能是电脑中存在多个python编译器,切换到刚刚成功安装pytorch的python编译器即可。 ***
autograd包为张量上的所有操作提供了自动求导机制。
import torch
#创建一个张量并设置requires_grad=True用来追踪其计算历史
x = torch.ones(2, 2, requires_grad=True)
print(x)
#对这个张量做一次运算:
y = x + 2
print(y)
print(y.grad_fn)
#对y进行更多操作:
z = y * y * 3
out = z.mean()
print(z, out)
#.requires_grad_(...) 原地改变了现有张量的 requires_grad 标志。如果没有指定的话,默认输入的这个标志是False'''
a = torch.randn(2, 2)
a = ((a * 3) / (a - 1))
print(a.requires_grad)
a.requires_grad_(True)
print(a.requires_grad)
b = (a * a).sum()
print(b.grad_fn)
#梯度,因为out是一个标量。所以让我们直接进行反向传播,out.backward()和out.backward(torch.tensor(1.))等价
out.backward()
#输出导数d(out)/dx
print(x.grad)
Pytorch实现反向传播
PyTorch Autograd自动求导