【人工智能基础作业1:PyTorch实现反向传播】

本文介绍了如何在PyCharm中安装PyTorch,通过配置清华镜像加速下载,然后在环境中测试安装。接着详细展示了使用PyTorch进行反向传播和自动求导的实验过程,探讨了不同步长对算法收敛的影响,并通过可视化展示结果。
摘要由CSDN通过智能技术生成


一、PyCharm的安装

安装Python,并安装PyCharm开发环境。
由于机器学习实验要用到Python以及开发环境,所以已经事先安装完成。

二、安装Pytorch环境

1.进入Pytorch选择选择相关版本

 a.复制安装命令

复制红框中的命令到cmd执行

2.在CMD执行安装命令

 a.直接在cmd下载

  由于服务器在国外,所以直接下载速度较慢,可以配置清华的镜像提高下载速度
下载速度较慢

 b.配置清华镜像

参考博客: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 版)

  1. 进入PyCharm设置

  2. 选择show all
    在这里插入图片描述

  3. 选择文件并导入
    在这里插入图片描述

  4. 新建测试python代码

from __future__ import print_function
import torch
x =  torch.empty(5,3)
print(x)
  1. 选择环境并运行代码
    选择运行环境
    在这里插入图片描述
    在这里插入图片描述
    运行成功会出现如下结果:
    在这里插入图片描述

三、使用配置的环境进行反向传播和自动求导实验

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可以快速求出损失函数对于各个权重的偏导,这个偏导值就是梯度,再搭配梯度下降法对权重向量进行调整。这样结果多轮的调整的迭代后,可以获得一个较为理想的神经网络模型。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值