| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> pytorch 深度学习的一些小笔记 -> 正文阅读 |
|
[人工智能]pytorch 深度学习的一些小笔记 |
一个比赛案例:Quick, Draw! Doodle Recognition Challenge 总结 | TangShusen
# gather在one-hot为输出的多分类问题中,可以把最大值坐标作为index传进去,然后提取到每一行的正确预测结果,这也是gather可能的一个作用。
TensorFlow 是一种非常强大和成熟的深度学习库,具有很强的可视化功能和多个用于高级模型开发的选项。它有面向生产部署的选项,并且支持移动平台。另一方面,PyTorch 框架还很年轻,拥有更强的社区动员,而且它对 Python 友好。 我的建议是如果你想更快速地开发和构建 AI 相关产品,TensorFlow 是很好的选择。建议研究型开发者使用 PyTorch,因为它支持快速和动态的训练。 激活函数 ?1. ?2. 3. 接下来,我们将探究模型训练中经常出现的两类典型问题:一类是模型无法得到较低的训练误差,我们将这一现象称作欠拟合(underfitting);另一类是模型的训练误差远小于它在测试数据集上的误差,我们称该现象为过拟合(overfitting)。在实践中,我们要尽可能同时应对欠拟合和过拟合。虽然有很多因素可能导致这两种拟合问题,在这里我们重点讨论两个因素:模型复杂度和训练数据集大小。
丢弃法(dropout):? 不改变其输入的期望值,隐藏层的单元丢弃是随机的,在方向传播时,其相关的权重梯度均为0,则输出层的计算无法过度以来任何一个单元,从而在训练模型时起到正则化的作用,并可以用来应对过拟合,只在训练模型时适用,在测试模型时,我们为了拿到更加确定性的结果,一般不适用丢弃法。 在模型参数初始化完成后,我们交替地进行正向传播和反向传播,并根据反向传播计算的梯度迭代模型参数。既然我们在反向传播中使用了正向传播中计算得到的中间变量来避免重复计算,那么这个复用也导致正向传播结束后不能立即释放中间变量内存。这也是训练要比预测占用更多内存的一个重要原因。另外需要指出的是,这些中间变量的个数大体上与网络层数线性相关,每个变量的大小跟批量大小和输入个数也是线性相关的,它们是导致较深的神经网络使用较大批量训练时更容易超内存的主要原因
dim属性的全称是dimension,表示维度。dim=0为第0个维度,代表行。同理,对于dim=1为第一个维度,代表列。 ---------------------------------------------------------------------------------------------------------------------------- 构建模型的时候? 区别:
2.和 # 因为FancyMLP和Sequential类都是Module类的子类,所以我们可以嵌套调用它们。
--------------------------------------------------------------------------------------------------------------------------- 1.parameters 也是一个tensor ,而和Tensor不同的是如果一个Tensor是Prarmeter,那么它会自动被添加到模型的参数列表里, 既然Parameter是一个Tensor,即Tensor拥有的属性它都有,比如可以根据 ???????? 2.PyTorch的 ? ? ? ? a.比如 init.normal_(param,mean =0,std =0.01)? 将权重参数初始化成均值为0、标准差为0.01的正态分布随机数,并依然将偏差参数清零。 ? ? ? ? ?b.使用常数来初始化权重参数:init.constant_(param, val=0) ? ? ? ? c.自定义初始化方法:例如如何自定义 0 0.01的正态分布随机数-> ???????????????? * 我们还可以通过改变这些参数的 ?共享模型参数????????在有些情况下,我们希望在多个层之间共享模型参数。共享模型参数:? ? ? ? ? -------------------------------------------------------------------------------------------------------------------- 自定义层????????深度学习的一个魅力在于神经网络中各式各样的层,例如全连接层和后面章节中将要介绍的卷积层、池化层与循环层。虽然PyTorch提供了大量常用的层,但有时候我们依然希望自定义层。本节将介绍如何使用 ---------------------------------------------------------------------------------------------------------------------------- Tensor的GPU计算????????存储在不同位置中的数据是不可以直接进行计算的。即存放在CPU上的数据不可以直接与存放在GPU上的数据进行运算,位于不同GPU上的数据也是不能直接进行计算的。
------------------------------------------------------------------------------------------------------------------------------ 卷积神经网络? ? ? ? 1.卷积层中 可以用 互相关运算代替,似乎大部分的学术中都是用互相关运算代替了卷积运算,结果相等,二而输出的形状 由输入形状和卷积核的窗口形状决定, 输入的高 - 窗口的高+1 即为输出形状的高,宽同理。 ? ? ? ? 2.特征图/特征映射(feature map)输出的卷积层有时候被称为 特征映射,因为它可以被视为一个输入映射到下一层的空间维度转换器。 ? ? ? ? 3.感受野(receptive field)?指在前向传播期间可能影响xx计算的所有元素(来自所有先前层), 所以 感受野的覆盖率可能大于某层输入的实际区域大小。 ? ? ? ? 4.填充(padding)是指在输入高和宽的两侧填充元素(通常是0元素),一般是为了 让输出和输入同形状,一般情况下都是设置填充的数量 P = k-1 ,且卷积神经网络经常使用奇数高宽的卷积核,如1、3、5和7,所以两端上的填充个数相等。对任意的二维数组 ? ? ? ? 5.步幅(stride) :卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。我们将每次滑动的行数和列数 多输入通道和多输出通道? ? ? ? 多通道输入原理跟单通道的一样,其实就是多个单通道输入的输出结果相加,所以这样的结果输出的通道数总是为1,如果想要多通道输出的结果,则在卷积层前再加一个参数 为输出的通道数,原理是开始时 每个输出的通道都获取所有的输入通道的数,每个输出通道分别进行多输入通道单输出的计算,然后用stack函数合并在一个,则形成了多通道输出。
池化层(pooling)? ? ? ? 是为了缓解卷积层对位置的过度敏感性? ? ? ? ? 最大池化层和平均池化层,不同于卷积的是不进行卷积运算和互相关运算,而是直接取池化窗口的最大值或平均值。? ? ? ? ? 同时跟对于填充和步幅这一块和卷积层是一样的,而在处理多通道输入数据时,池化层对每个输入通道分别池化,而不是像卷积层那样将各通道的输入按通道相加。这意味着池化层的输出通道数与输入通道数相等 ? ? ? ?? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 0:35:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |