深度学习计算

模型组成

经研究表明:对模型中多个层组成的块进行研究,效果好过对单独每一层进行研究

自定义块

一个块就是一个类,其中包含构造函数和前向传播函数。一般我们直接让块继承pytorch里的块类,方便我们定义。

顺序块

我们在pytorch中经常使用的Sequential是一个顺序块,能顺序执行我们提供的层,在书中,我用for循环遍历字典的方式实现了我们自己的一个顺序块

在前向传播中执行代码

我们可以直接将代码写入自定义块中的前向传播方法,将原本的顺序直线改成可知控制的分支和循环。

甚至还能嵌套其他块

参数管理

pytorch提供了接口让我们能我们查看,修改参数。

参数的数据结构

基本的数据结构是有序字典,可以通过参数的名称访问参数的值。

当模块中有嵌套时,模块之前的参数会以树的方式存储

参数的初始化

pytorch内置了参数的初始化方法(一些经典的初始化方法)

pytorch也提供了你进行自定义初始化的接口

参数绑定

这是一个很神奇的功能,他可以将一套参数同时用到模型的多个层中(层的形状要一样),要注意的是,在修改参数时,修改一个地方的参数其他调用了这套参数的层也会改(行为类似指针),而在计算梯度时则会对同一套参数计算多次t梯度

延后参数化

网络每一层的参数大小是在数据在模型中传递时才确定。

自定义层

与自定义块非常类似,可以将自定义层看成自定义只有一层的自定义块。

区别是:将原来定义要用到的层的位置改为参数,将原来组合层的位置改为处理参数的流程。其他基本不变。

读写文件

这里的读写文件是指保存模型中的参数。

存储张量

可以保存模型中的中间和张量

存储参数

pytorch中给出了专门的函数用于保存和读取一个网路的参数。

GPU计算

需要注意的一点是GPU和CPU的存储是分开的,CPU的内存就是内存而GPU的内存是显存。当打印GPU中的张量时(或转成numpy),要进行内存之间的复制。

计算设备

书中给出了两个很方便的函数,可以给出指定GPU或是所有GPU。

张量与GPU

pytorch中可以查看张量在那个设备上,也可以选择将张量方到哪个设备上。

复制

在两个不同设备上的张量是不能直接计算的,要复制到同一个设备上后才能计算。

网外与GPU

我们也可以选择将网络放到GPU上

相关推荐
汽车仪器仪表相关领域17 小时前
AI赋能智能检测,引领灯光检测新高度——NHD-6109智能全自动远近光检测仪项目实战分享
大数据·人工智能·功能测试·机器学习·汽车·可用性测试·安全性测试
brave and determined17 小时前
工程设计类学习(DAY4):硬件可靠性测试全攻略:标准到实战
人工智能·嵌入式硬件·测试·硬件设计·可靠性测试·嵌入式设计·可靠性方法
Stuomasi_xiaoxin17 小时前
ROS2介绍,及ubuntu22.04 安装ROS 2部署使用!
linux·人工智能·深度学习·ubuntu
李泽辉_17 小时前
深度学习算法学习(五):手动实现梯度计算、反向传播、优化器Adam
深度学习·学习·算法
lovingsoft17 小时前
AI+敏捷时代,专项测试人员是否还有存在的必要?
人工智能
木头程序员18 小时前
大模型边缘部署突破:动态推理技术与精度-延迟-能耗帕累托优化
大数据·人工智能·计算机视觉·自然语言处理·智能手机·数据挖掘
DX_水位流量监测18 小时前
无人机测流之雷达流速仪监测技术分析
大数据·网络·人工智能·数据分析·自动化·无人机
昨日之日200618 小时前
LTX-2 - 一键生成音视频,创作更轻松 支持50系显卡 ComfyUI工作流 一键整合包
人工智能·音视频·视频
imbackneverdie18 小时前
Science最新文章:大型语言模型时代的科学生产
人工智能·语言模型·自然语言处理·aigc·ai写作
李泽辉_18 小时前
深度学习算法学习(一):梯度下降法和最简单的深度学习核心原理代码
深度学习·学习·算法