torch 初体验

本文介绍了作者在学习PyTorch过程中对反向传播的理解和实践,阐述了PyTorch作为机器学习库的特性和优势,如支持GPU、动态神经网络、易于理解和自定义扩展。同时,通过手动实现和优化器自动更新参数的示例,解释了神经网络权重的调整过程。
摘要由CSDN通过智能技术生成

torch 初体验

学习了 pytorch 一段时间了, 但是对于 torch 的反向传播还是有一些难以理解, 因此就详细的从理论和时间的角度进行学习和实践.
首先, 手动实现以下 torch 的梯度反向传播和参数更新, 其中为了更加方便地理解, 搭配了手动实现了调用系统梯度方法.

首先, PyTorch到底是什么呢?

Torch是一个有大量机器学习算法支持的科学计算框架,是一个与Numpy类似的张量(Tensor)操作库。

PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。

但是对于PyTorch,通过反向求导技术,可以让你零延迟地任意改变神经网络的行为,而且其实现速度快。正是这一灵活性是PyTorch对比TensorFlow的最大优势。

优点:支持GPU;灵活,支持动态神经网络

;底层代码易于理解;命令式体验;自定义扩展。

缺点:全面性处于劣势,目前PyTorch还不支持快速傅里叶、沿维翻转张量和检查无穷与非数值张量;针对移动端、嵌入式部署以及高性能服务器端的部署其性能表现有待提升;其次因为这个框架较新,使得他的社区没有那么强大,在文档方面其C库大多数没有文档。

假 定 目 标 公 式 为 : y = 2 x + 1 也 就 是 : y = k x + b , k = 2 , b = 1 现 在 进 行 梯 度 求 解 , 模 拟 反 向 传 播 : l o s s = ( y p r e d − y t r u e ) 2 k _ g r a d = l o s s k ′ = 2 ( y p r e d − y t r u e ) ∗ x b _ g r a d = l o s s b ′ = 2 ( y p r e d − y t r u e ) ∗ 1 n e w _ k _ p r e d = k _ g r a d − l e a r n i n g _ r a t e ∗ k _ g r a d n e w _ b _ p r e d = b _ g r a d − l e a r n i n g _ r a t e ∗ b _ g r a d 假定目标公式为: y = 2x +1 \\ 也就是: y = kx + b, k=2,b=1 \\ 现在进行梯度求解, 模拟反向传播: \\ loss = (y_{pred} - y_{true})^2 \\ k\_grad = loss_k^{'} = 2(y_{pred} - y_{true})*x \\ b\_grad = loss_b^{'} = 2(y_{pred} - y_{true})*1 \\ new\_k\_pred = k\_grad - learning\_rate*k\_grad \\ new\_b\_pred = b\_grad - learning\_rate*b\_grad \\ :y=2x+1:y=kx+b,k=2,b=1,:loss=(ypred

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

或许,这就是梦想吧!

如果对你有用,欢迎打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值