<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sujixian1995的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sujixian1995</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sujixian1995]]></copyright><item><title><![CDATA[PackagesNotFoundError: The following packages are not available from current channels]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/122541115</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/122541115</guid><author>sujixian1995</author><pubDate>Mon, 17 Jan 2022 15:33:27 +0800</pubDate><description><![CDATA[conda config --add channels conda-forge

]]></description><category></category></item><item><title><![CDATA[git 仓库ssh配置]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/122477637</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/122477637</guid><author>sujixian1995</author><pubDate>Thu, 13 Jan 2022 16:50:23 +0800</pubDate><description><![CDATA[git 仓库ssh配置
SSH key 配置

]]></description><category></category></item><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/122470911</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/122470911</guid><author>sujixian1995</author><pubDate>Thu, 13 Jan 2022 11:57:46 +0800</pubDate><description><![CDATA[Group Convolution分组卷积，以及Depthwise Convolution和Global Depthwise Convolution 
Group Convolution分组卷积

]]></description><category></category></item><item><title><![CDATA[残差网络（ResNet）]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120455486</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120455486</guid><author>sujixian1995</author><pubDate>Fri, 24 Sep 2021 15:21:59 +0800</pubDate><description><![CDATA[残差网络（ResNet）
对于残差网络的一点个人理解：残差网络就是通过嵌套函数不断在原函数的基础上增加残差快
来扩大函数所能表示的范围以此来更能接近真正的表示函数复杂的函数类包含较小的函数类

残差块


 ResNet模型


为什么深层的网络，底层比较难训练？
可以这样想：越靠近损失函数误差越小因为我们经过训练预测值和真实值之间的差距已经越来越小了所以梯度会越来越小当做反向传播的时候越往回传梯度就越小训练就越困难。
import torch
from torch import nn
from torch]]></description><category></category></item><item><title><![CDATA[batch normalization(批量归一化)]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120429129</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120429129</guid><author>sujixian1995</author><pubDate>Thu, 23 Sep 2021 11:28:54 +0800</pubDate><description><![CDATA[批量归一化

训练深层神经网络是十分困难的，特别是在较短的时间内使他们收敛更加棘手。 批量归一化（batch normalization）这是一种流行且有效的技术，可持续加速深层网络的收敛速度。 批量归一化使得我们能够训练 100 层以上的网络。
1 训练深层网络
首先，数据预处理的方式通常会对最终结果产生巨大影响。使用真实数据时，我们的
第一步是标准化输入特征，使其平均值为0，方差为1。这种标准化可以很好地与我们的优化器配合使用，因为它可以将参数的量级进行统一。
第二，对于典型的多层感知机或卷积神经网络.]]></description><category></category></item><item><title><![CDATA[1 * 1卷积层]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120357199</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120357199</guid><author>sujixian1995</author><pubDate>Sat, 18 Sep 2021 10:11:34 +0800</pubDate><description><![CDATA[对于1 * 1卷积层自己的一点理解
1 *1 卷积层最早是2014年ICLR的一篇名为《Network In Network》的论文提出的从下面图片可以看成 1 * 1卷积层其实就相当于全连接层也就是相当于输入乘以权重。它为改变输入的大小，
1*1 卷积的作用
一、 实现特征通道的升维和降维
　　通过控制卷积核的数量达到通道数大小的放缩。而池化层只能改变高度和宽度，无法改变通道数。
二、 增加非线性
　　1×1卷积核的卷积过程相当于全连接层的计算过程，并且还加入了非线性激活函数，从而可以增加网络的非线性，使]]></description><category></category></item><item><title><![CDATA[图像卷积操作]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120356361</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120356361</guid><author>sujixian1995</author><pubDate>Fri, 17 Sep 2021 20:48:47 +0800</pubDate><description><![CDATA[图像卷积

 1 互相关运算
严格来说，卷积层是个错误的叫法，因为它所表达的运算其实是 互相关运算 (cross-correlation)，而不是卷积运算。 在卷积层中，输入张量和核张量通过互相关运算产生输出张量。首先，我们暂时忽略通道（第三维）这一情况，看看如何处理二维图像数据和隐藏表示。在下图中，输入是高度为  3  、宽度为  3  的二维张量（即形状为  3×3  ）。卷积核的高度和宽度都是  2  ，而卷积核窗口（或卷积窗口）的形状由内核的高度和宽度决定（即  2×2  ）。
import to.]]></description><category></category></item><item><title><![CDATA[GPU计算]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120342092</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120342092</guid><author>sujixian1995</author><pubDate>Fri, 17 Sep 2021 09:53:45 +0800</pubDate><description><![CDATA[1 计算设备
在PyTorch中，CPU和GPU可以用torch.device(‘cpu’)和torch.cuda.device(‘cuda’)表示。应该注意的是，cpu设备意味着所有物理CPU和内存。这意味着PyTorch的计算将尝试使用所有CPU核心。然而，gpu设备只代表一个卡和相应的显存。如果有多个GPU，我们使用torch.cuda.device(f’cuda:{i}’)来表示第(i)块GPU（(i)从0开始）。另外，cuda:0和cuda是等价的。
import torch
from torch]]></description><category></category></item><item><title><![CDATA[参数管理与共享]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120328842</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120328842</guid><author>sujixian1995</author><pubDate>Thu, 16 Sep 2021 20:57:56 +0800</pubDate><description><![CDATA[参数管理

一旦选择了架构并设置了超参数，就进入了训练阶段。此时，目标是找到使损失函数最小化的参数值。经过训练后需要使用这些参数来做出未来的预测。此外，有时我们希望提取参数，以便在其他环境中复用它们，将模型保存到磁盘，以便它可以在其他软件中执行，或者为了获得科学的理解而进行检查。大多数情况下，可以忽略声明和操作参数的具体细节，而只依靠深度学习框架来完成繁重的工作。然而，当我们离开具有标准层的层叠架构时，我们有时会陷入声明和操作参数的麻烦中。在本节中，我们将介绍以下内容：
&nbsp;&nbsp;&nbsp;]]></description><category></category></item><item><title><![CDATA[模型构造(层和块)]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120323464</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120323464</guid><author>sujixian1995</author><pubDate>Thu, 16 Sep 2021 12:31:40 +0800</pubDate><description><![CDATA[层和块

块可以描述单个层、由多个层组成的组件或整个模型本身。使用块进行抽象的一个好处是可以将一些块组合成更大的组件，这一过程通常是递归的。这一点在 图5.1.1 中进行了说明。通过定义代码来按需生成任意复杂度的块，我们可以通过简洁的代码实现复杂的神经网络。
从编程的角度来看，块由类（class）表示。它的任何子类都必须定义一个将其输入转换为输出的正向传播函数，并且必须存储任何必需的参数。注意，有些块不需要任何参数。最后，为了计算梯度，块必须具有反向传播函数。幸运的是，在定义我们自己的块时，由于自动微分提.]]></description><category></category></item><item><title><![CDATA[反向传播、数值稳定性、模型初始化、激活函数]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120292204</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120292204</guid><author>sujixian1995</author><pubDate>Wed, 15 Sep 2021 10:56:58 +0800</pubDate><description><![CDATA[1 反向传播
在训练神经网络时，正向传播和后向传播相互依赖。对于正向传播，我们沿着依赖的方向遍历计算图并计算其路径上的所有变量。然后将这些用于反向传播，其中计算顺序与计算图的相反。以上述简单网络为例进行说明。一方面，在正向传播期间计算正则项取决于模型参数 W(1) 和 W(2) 的当前值。它们是由优化算法根据最近迭代的反向传播给出的。另一方面，反向传播期间参数 的梯度计算取决于由正向传播给出的隐藏变量 h 的当前值。因此，在训练神经网络时，在初始化模型参数后，我们交替使用正向传播和反向传播，利用反向传播给.]]></description><category></category></item><item><title><![CDATA[丢弃法(dropout)]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120280830</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120280830</guid><author>sujixian1995</author><pubDate>Tue, 14 Sep 2021 11:32:58 +0800</pubDate><description><![CDATA[1 对于丢弃法的一点小思考
(1)  对于模型设计我们可以把隐藏层设计的稍微大一点然后用drop out控制隐藏层大小这样的设计可能比隐藏层设计的小一点的效果更好，防止过拟合，drop out 其实就是一个正则项。
(2) drop out 就是随机丢弃隐藏层神经元的个数从而防止参数过分依赖训练数据，增加参数对数据集的泛化能力
(3) Drop out可以减少神经元之间复杂的共适应关系，因为Dropout使得某两个神经元不一定每次都在一个子网络结构中出现。基于此权值的更新不在依赖于固定关系的隐含节点的共同作]]></description><category></category></item><item><title><![CDATA[权重衰减（ L2 正则化）]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120274429</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120274429</guid><author>sujixian1995</author><pubDate>Mon, 13 Sep 2021 21:23:21 +0800</pubDate><description><![CDATA[对于权重衰减自己的一点理解
加入L2正则化后损失函数变得平滑了很多如图所示，蓝色的曲线为未加入L2正则项的曲线，绿色为加入L2正则项的曲线这样对于数据的拟合变得不这么剧烈从而缓解了过拟合。

如图所示，绿色为损失项，橙色为正则项W权重越大惩罚项也就是橙色曲线的作用就越明显整个图就越靠近原点从而使曲线变平滑不再那么的剧烈从而减小过拟合较小的 λ 值对应较少约束的 w ，而较大的 λ 值对 w 的约束更大

import torch
from torch import nn
from d2l import to]]></description><category></category></item><item><title><![CDATA[多层感知机从零开始实现]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/120255041</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/120255041</guid><author>sujixian1995</author><pubDate>Mon, 13 Sep 2021 14:51:43 +0800</pubDate><description><![CDATA[## 多层感知机的从零开始实现
import torch
from torch import nn
from d2l import torch as d2l


batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) #生成两个数据迭代器

初始化模型参数
num_inputs, num_outputs, num_hiddens = 784, 10, 256
W1 = nn.Parameter(torc]]></description><category></category></item><item><title><![CDATA[pandas.get_dummies 的用法]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/118515708</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/118515708</guid><author>sujixian1995</author><pubDate>Tue, 06 Jul 2021 10:43:47 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/maymay_/article/details/80198468

]]></description><category></category></item><item><title><![CDATA[super(LinearNet,self).__init__()是什么意思]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/115016580</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/115016580</guid><author>sujixian1995</author><pubDate>Fri, 19 Mar 2021 21:40:19 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/zyh19980527/article/details/107206483/

]]></description><category></category></item><item><title><![CDATA[pytorch-Dataloader多进程使用出错]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/114892704</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/114892704</guid><author>sujixian1995</author><pubDate>Tue, 16 Mar 2021 18:18:49 +0800</pubDate><description><![CDATA[使用Dataloader进行多进程数据导入训练时，会因为多进程的问题而出错

其中参数num_works=表示载入数据时使用的进程数，此时如果参数的值不为0而使用多进程时会出现报错
此时在数据的调用之前加上if name == ‘main’:即可解决问题


...]]></description><category></category></item><item><title><![CDATA[2  PyTorch基础]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/113773368</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/113773368</guid><author>sujixian1995</author><pubDate>Tue, 23 Feb 2021 23:42:50 +0800</pubDate><description><![CDATA[2 PyTorch基础
2.1Numpy与Tensor

第1章已经介绍了Numpy，了解到其存取数据非常方便，而且还拥有大
量的函数，所以深得数据处理、机器学习者喜爱。这节我们将介绍PyTorch
的Tensor，它可以是零维（又称为标量或一个数）、一维、二维及多维的数
组。Tensor自称为神经网络界的Numpy，它与Numpy相似，二者可以共享内
存，且之间的转换非常方便和高效。不过它们也有不同之处，最大的区别就
是Numpy会把ndarray放在CPU中进行加速运算，而由Torch产生的Tensor]]></description><category></category></item><item><title><![CDATA[1  Numpy基础]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/113012673</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/113012673</guid><author>sujixian1995</author><pubDate>Tue, 09 Feb 2021 01:29:34 +0800</pubDate><description><![CDATA[1.1 生成Numpy数组
Numpy封装了一个新的数据类型ndarray（N-dimensional Array），它是
一个多维数组对象。该对象封装了许多常用的数学运算函数，方便我们做数
据处理、数据分析等。那么如何生成ndarray呢？这里介绍生成ndarray的几
种方式，如从已有数据中创建，利用random创建，创建特定形状的多维数
组，利用arange、linspace函数生成等
1.1.1 从已有数据中创建数组
直接对Python的基础数据类型（如列表、元组等）进行转换来生成
ndarray：]]></description><category></category></item><item><title><![CDATA[ML/DL学习笔记5——分类：概率生成模型]]></title><link>https://blog.youkuaiyun.com/sujixian1995/article/details/112075510</link><guid>https://blog.youkuaiyun.com/sujixian1995/article/details/112075510</guid><author>sujixian1995</author><pubDate>Mon, 11 Jan 2021 21:32:16 +0800</pubDate><description><![CDATA[课程地址
Classification 概念描述
分类问题是找一个函数，它的输入是一个实体，它的输出是这个实体属于哪一个类
还是以宝可梦为例，已知宝可梦有18种属性，现在要解决的分类问题就是做一个宝可梦种类的分类器，我们要找一个function，这个function的input是某一只宝可梦，它的output就是这只宝可梦属于这18类别中的哪一个type

输入数值化
对于宝可梦的分类问题来说，我们需要解决的第一个问题就是，怎么把某一只宝可梦当做function的input？要想把一个东西当做functio]]></description><category></category></item></channel></rss>