133|2

171

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

《大语言模型开发:用开源模型开发本地系统》-用PyTorch实现单层感知机和神经网络 [复制链接]

本帖最后由 ljg2np 于 2024-12-25 12:55 编辑

       本文分享对书中PyTorch开发基础(第3章)内容的阅读理解,介绍了PyTorch构建单层感知机和神经网络的应用实现。

一、引言

       深度学习框架是为了方便开发者进行深度学习研究和开发的工具,对框架的选择一般取决于应用需求和开发者的喜好。

       PyTorch是由Meta的人工智能研究团队开发的开源深度学习框架,基于Torch并采用Python语言开发,因其动态计算图的特性,成为TensorFlow的最大竞争对手。

二、安装

       PyTorch运行环境支持Linux和Windows操作系统。

1、CUDA安装

      书中介绍了在Linux Ubuntu22.04 x86_64系统的安装流程: 

下载更新完毕,然后执行下面指令:

      sudo apt-get -y install cuda

      sudo reboot

      用nvidia-smi可以查看GPU信息。

      对于Windows系统,书中未提,实际上十分简单,访问英伟达官方网站,下载exe文件并安装即可。

2、PyTorch安装

       输入下面的指令进行安装(可以参考采用国内高速镜像网站的安装方法):

       pip install torch torchvision torchaudio

       安装依赖库:

       pip install -r requirements.txt

其中,requirements.txt内容如下:

       datasets>=2.8.0

       peft>=0.4.0.dev0

       transformers>=4.30.1

       accelerate>=0.20.3

       bitsandbytes>=0.39.0

       wandb>=0.14.2

3、安装后的几个检查点

      检查PyTorch版本:

       torch.__version__

      判断CUDA支持:

       torch.cuda.is_available()

      检查CUDA版本:

       torch.version.cuda

       基于以上操作,就完成了PyTorch的安装内容。

三、特点

1、支持GPU

      PyTorch可以在CPU上运行,也支持GPU操作。

      Tensors可以通过.to方法转换到CPU或GPU上。如:

      device=torch.device("cuda:0")

      x=torch.tensor([1,2,3]).to(device)

      y=x*x

      print(y.to("cpu",torch.double))

2、动态计算图

      与TensorFlow的静态计算图不同,PyTorch使用动态计算图。

      PyTorch提供自动梯度计算机制,Autograd库属于define-by-run类型框架,具有自动微分功能,将Tensor的属性.requires_grad设为True,在调用backward()时,梯度会被自动计算。如:

      x=torch.([[1.,2.],[3.,4.]],requires_grad=True)

      y=x**2

      y.backward()

      可以使用torch.no_grad()阻止Autograd追踪。

      torch.zero_grad(),用于清零梯度。

3、张量

      PyTorch张量是PyTorch中最重要的数据结构,相当于NumPy的多维数组,都是单一数据类型多维矩阵。

      PyTorch张量对象可以共享内存,具有联动操作特性。

      借助于time函数,可以比较PyTorch与Numpy在处理张量运算时的效率,可以看到PyTorch在底层做了很多优化工作。

4、类与模块(神经网络)

      torch.nn模块是构建神经网络的主要工具,包括:预定义层、损失函数、顺序层模型(nn.Sequential)、正则归一化层、激活函数等。

      torch.linear线性模块是神经网络模块库(torch.nn)中的一个类,用于全连接层或线性层的构建。

      torch.optim模块在PyTorch库中用于实现各种优化算法,有SGD优化器、Adam优化器、学习率调度器等。

5、其它模块

      书中还介绍了几个PyTorch使用中较常用的模块和类库,如nn.Parameter类、typing模块、logging模块、dataclasses模块和Fire库。

四、应用

       书中对PyTorch中的常用类和模块做了简单介绍之后,基于PyTorch实现神经网络的构建分三个步骤循序渐进的进行了讲解,下面是代码:

1、单层感知机实现

       在实现过程中,从nn.Module继承定义类Perceptron,使用PyTorch的tensor张量替代NumPy的数组,使用了nn模块的已有函数,见图中蓝框标注。   

2、基于函数的神经网络实现

      书中给出了实现简单神经网络的代码,通过使用PyTorch函数定义PyTorchNeuralNetwork类,见图中蓝框标注部分。

 3、基于torch.nn模块构建神经网络

      书中给出了例子代码,从torch.nn.Module继承并定义类,类中函数使用了nn模块函数,见图中蓝色方框标注部分。

 五、小结

       通过本章的学习,掌握了新工具并加深了构建神经网络的学习;与之前Numpy构建神经网络相比较,PyTorch更加有条理和便捷;通过对GPU的支持,能够高效的进行神经网络的构建,为之后深度学习的开展提供了便利的工具。

 

推荐阅读和参考资料:

1、TensorFlow

2、PyTorch社区

最新回复

谢谢分享,期待后续深度分享。   详情 回复 发表于 昨天 14:34
点赞 关注

回复
举报

7565

帖子

18

TA的资源

五彩晶圆(高级)

沙发
 

谢谢分享,期待后续深度分享。

点评

谢谢支持和鼓励  详情 回复 发表于 昨天 15:33
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 

回复

171

帖子

2

TA的资源

一粒金砂(高级)

板凳
 
freebsder 发表于 2024-12-25 14:34 谢谢分享,期待后续深度分享。

谢谢支持和鼓励

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/3 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表