文章目录
- 一、PyCharm的安装
- 二、安装Pytorch环境
- 1.进入Pytorch选择选择相关版本
- a.复制安装命令
- 2.在CMD执行安装命令
- a.直接在cmd下载
- b.配置清华镜像
- 3.在PyCharm中导入环境并测试
- 三、使用配置的环境进行反向传播和自动求导实验
- 1.反向传播实验
- 2.更换步长值查看算法的收敛情况
- 四、 总结
一、PyCharm的安装
安装Python,并安装PyCharm开发环境。
由于机器学习实验要用到Python以及开发环境,所以已经事先安装完成。
二、安装Pytorch环境
1.进入Pytorch选择选择相关版本
2.在CMD执行安装命令
由于服务器在国外,所以直接下载速度较慢,可以配置清华的镜像提高下载速度
参考博客:Windows下更换pip源为清华源 1.打开appdata文件夹,在资源管理器的地址栏输入%appdata%后回车
2.新建一个pip文件夹,在pip文件夹里面新建一个配置文件pip.ini
3.在配置文件中输入如下内容后保存
[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
可以看到配置完成后速度有较大提升
3.在PyCharm中导入环境并测试
参考文档:Pytorch 安装及使用(Pycharm 版)
- 进入PyCharm设置
- 选择show all
- 选择文件并导入
- 新建测试python代码
from __future__ import print_function
import torch
x = torch.empty(5,3)
print(x)
- 选择环境并运行代码
选择运行环境
运行成功会出现如下结果:
三、使用配置的环境进行反向传播和自动求导实验
1.反向传播实验
参考博客:06 Pytorch实现反向传播
定义损失函数:
def loss(x, y):
y_pred = forward(x)
return (y_pred - y) ** 2
调用backward函数计算每个权重的梯度值:
l.backward()
迭代100轮,查看算法的收敛情况,此时步长为0.01
for epoch in range(100):
for x, y in zip(x_data, y_data):
l = loss(x, y)
l.backward()
print("\tgrad: ", x, y, w.grad.item())
w.data = w.data - 0.01 * w.grad.data
w.grad.data.zero_()
print("pregress:", epoch, l.item())
运行结果:
将算法收敛情况可视化输出
x = np.arange(0.0, 100, 1)
plt.scatter(x, lo)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.xlabel(u"迭代次数")
plt.ylabel(u"损失函数值")
plt.show()
输出结果
2.更换步长值查看算法的收敛情况
η=0.001
w.data = w.data - 0.001 * w.grad.data
算法收敛情况:
η=0.005
w.data = w.data - 0.005 * w.grad.data
算法收敛情况:
可以看到对于不同的步长,算法收敛的程度和快慢不同,这是由于对于不同的步长,梯度下降算法获得最优解的情况不同。这就是神经网络模型获得良好模型的一个重要方法:调参
四、 总结
使用Pytorch可以快速求出损失函数对于各个权重的偏导,这个偏导值就是梯度,再搭配梯度下降法对权重向量进行调整。这样结果多轮的调整的迭代后,可以获得一个较为理想的神经网络模型。