栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 一、PyCharm的安装
  • 二、安装Pytorch环境
    • 1.进入Pytorch选择选择相关版本
      •  a.复制安装命令
    • 2.在CMD执行安装命令
      •  a.直接在cmd下载
      •  b.配置清华镜像
    • 3.在PyCharm中导入环境并测试
  • 三、使用配置的环境进行反向传播和自动求导实验
    • 1.反向传播实验
    • 2.更换步长值查看算法的收敛情况
  • 四、 总结


一、PyCharm的安装
安装Python,并安装PyCharm开发环境。
由于机器学习实验要用到Python以及开发环境,所以已经事先安装完成。
二、安装Pytorch环境 1.进入Pytorch选择选择相关版本  a.复制安装命令

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/846419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号