
《python深度学习》笔记
文章平均质量分 75
深度学习学习笔记
程序先锋
学习笔记
展开
-
2022年人工智能领域发展七大趋势
美国《福布斯》网站在近日的报道中指出,尽管目前很难想象机器自主决策所产生的影响,但可以肯定的是,当时光的车轮到达2022年时,人工智能领域新的突破和发展将继续拓宽我们的想象边界,其将在7大领域“大显身手”。原创 2021-11-29 23:55:17 · 2616 阅读 · 0 评论 -
神经网络模型压缩&实例教程—结构化剪枝
'''搭建类LeNet网络'''# 单通道图像输入,5×5核尺寸return x本示例首先搭建了一个类LeNet网络模型,为了进行结构化剪枝,我们选取了LeNet的conv1模块,该模块参数包含为3×5×5的weight卷积核参数和3×1的bias参数,通过示例,我们利用torch.nn.prune中的ln_structured剪枝方法,实现了对weight的3个通道中其中一个通道进行了L2 norm结构化剪枝。原创 2023-05-07 22:07:03 · 901 阅读 · 0 评论 -
MobileViT神经网络模型
MobileViT论文中绘制的Standard visual Transformer。首先将输入的图片划分成一个个Patch,然后通过线性变化将每个Patch映射到一个一维向量中(视为一个个Token),接着加上位置偏置信息(可学习参数),再通过一系列Transformer Block,最后通过一个全连接层得到最终预测输出。原创 2023-05-04 09:20:05 · 2349 阅读 · 0 评论 -
神经网络模型压缩技术—剪枝
利用神经网络参数的冗余性和网络结构的冗余性精简模型,在不影响任务完成度的情况下,得到参数量更少、结构更精简的模型。被压缩后的模型计算资源需求和内存需求更小,相比原始模型能够满足更加广泛的应用需求。剪枝方法探索模型权重中的冗余, 并尝试删除/修剪冗余和非关键的权重。剪枝分为结构化剪枝和非结构化剪枝,两者区别在于是否会一次性删除整个节点或滤波器。原创 2023-05-04 11:15:48 · 11034 阅读 · 0 评论 -
【综述】结构化剪枝
深度卷积神经网络(CNNs)的显著性能通常归因于其更深层次和更广泛的架构,这可能会带来巨大的计算成本。剪枝神经网络有效地降低了存储和计算成本,因此引起了人们的兴趣。。结构化剪枝的特殊要求导致了许多新挑战的发现和创新解决方案的发展。本文综述了深度CNN的结构化剪枝的最新进展。我们总结和比较了最新的结构化剪枝技术,包括。在讨论结构化剪枝算法时,我们简要介绍了非结构化剪枝对等物,以强调它们的区别。原创 2023-05-13 11:29:02 · 2213 阅读 · 0 评论 -
神经网络模型压缩&实例教程—非结构化剪枝
'''搭建类LeNet网络'''return x本示例首先搭建了一个类LeNet网络模型,为了进行非结构化剪枝,我们选取了LeNet的conv1模块,该模块参数包含为6×3×3的weight卷积核参数和6×1的bias参数,通过示例,我们利用torch.nn.prune中的剪枝方法,实现了对weight参数进行30%随机非结构化剪枝,以及对bias的L1非结构化剪枝。本文用到的核心函数module.named_parameters(),需转换为list对其可视化。原创 2023-05-05 11:23:14 · 1216 阅读 · 0 评论 -
神经网络:全连接层转换为卷积层
1.怎样将全连接层转换为卷积层?首先,我们需要了解全连接层和卷积层之间有啥区别。卷积层与全连接层卷积层的特点:稀疏连接,权值共享全连接层的特点:每个神经元都和上一层的所有神经元相连接两者的共同点:都是由上一层的输出与参数矩阵相乘从而得到下一层的输入所以我们得以得到结论,全连接层和卷积层实际上是可以相互转换的。我们来看下面的这个例子:如下图所示:卷积层的输出为 7×7×512,即每个 feature map 的大小为 7×7,共有 512 个 feature map,然后通过原创 2021-11-19 23:42:46 · 5189 阅读 · 3 评论 -
27 类深度学习主要神经网络
1. 感知器(Perceptron(P)) 感知器模型也称为单层神经网络。这个神经网络只包含两层: 输入层输出层 这种类型的神经网络没有隐藏层。它接受输入并计算每个节点的加权。然后,它使用激活函数(大多数是Sigmoid函数)进行分类。应用: 分类编码数据库(多层感知器)监控访问数据(多层感知器) 2. 前馈(Feed Forward (FF)) 前馈神经网络是一种其中的节点不会形成循环的人工神经网络。在这种神经网络中,所有的感知器都被安排在输入层接收输入,输出.转载 2022-04-14 15:45:43 · 6356 阅读 · 0 评论 -
Alexnet网络模型的原理与实现
AlexNet创新点:1、成功应用ReLU激活函数2、成功使用Dropout机制3、使用了重叠的最大池化(Max Pooling)。此前的CNN通常使用平均池化,而AlexNet全部使用最大池化,成功避免了平均池化带来的模糊化效果4、提出LRN(局部响应归一化)5、使用GPU加速训练6、使用了数据增强策略(Data Augmentation)网络结构:8层网络,参数大约有60 million,使用了relu函数,头两个全连接层使用了0.5的dropout。使用了LRN和重叠的池化...原创 2021-12-27 15:26:39 · 1845 阅读 · 0 评论 -
MobileViT模型简介
自从2020年ViT(Vision)模型的横空出世,人们发现了Transformer架构在视觉领域的巨大潜力。近些年,越来越多的科研人员投入Transformer的怀抱,视觉领域的各项任务也不断被Transformer架构模型刷新。Transformer虽然强大,但在现在看来落地仍存在很多难点。比如模型参数太大(比如ViT Large Patch16模型光权重就有1个多G),而且算力要求太高,这基本就给移动端部署Transformer模型判了死刑。转载 2022-11-13 14:10:43 · 958 阅读 · 0 评论 -
《python深度学习》笔记(二十一):VGG16网络模型的原理与实现
4.VGG创新点1。使用3x3卷积核替代7x7卷积核的好处?2 个 3x3 的卷积核叠加,它们的感受野等同于 1 个 5x5 的卷积核,3 个叠加后,它们的感受野等同于 1 个 7x7 的效果。由于感受野相同,3个3x3的卷积,使用了3个非线性激活函数,增加了非线性表达能力,从而可以提供更复杂的模式学习。原创 2021-12-25 15:02:33 · 23095 阅读 · 5 评论 -
经典卷积神经网络总结
(1)AlexNet:首次采用了整流线性单元(ReLU)、dropout和局部响应归一化(LRN)等新技术,采用了数据增强技术,以提高网络的泛化程度,同时减少过拟合问题。(2)VGG:所有卷积核的大小都是3×3,较小的卷积内核大小使VGG将CNN的层数扩展到10层以上,增强了网络的表达能力。(3)Inception_v3:在Inception_v2的基础上,Inception_v3进一步分解卷积,即任何一个卷积都可以替换为一个卷积之后的一个卷积。(4)ResNet:...原创 2022-02-19 19:56:36 · 2815 阅读 · 0 评论 -
经典神经网络模型分类简介(一)
深层前馈神经网络有一个问题,随着网络层数的增加,网络会发生了退化(degradation)现象:随着网络层数的增多,训练集loss逐渐下降,然后趋于饱和,当再增加网络深度的话,训练集loss反而会增大。为了解决这个问题,残差网络使用跳跃连接实现信号跨层传播原创 2021-11-28 20:25:45 · 26465 阅读 · 1 评论 -
《python深度学习》笔记(二十):神经网络的解释方法之CAM、Grad-CAM、Grad-CAM++、LayerCAM
GAP分类后概率最大的神经元的权重特征图梯度的全局平均来计算权重。原创 2023-10-31 17:39:33 · 3550 阅读 · 1 评论 -
《python深度学习》笔记(十九):卷积神经网络的可视化
你知道神经网络各个层具体是怎样学习的吗?深度学习模型就像是“黑盒”,即模型学到的表示很难用人类可以理解的方式来提取和呈现。这个说法部分正确,但卷积神经网络绝对不是这样的。卷积神经网络学到的表示非常适合可视化,很大程度上是因为它们的视觉概念的表示。下面介绍三种最简单的最有用的可视化方法。转载他人的笔记:1.可视化中间激活层https://blog.youkuaiyun.com/huang1024rui/article/details/1191502225.4 卷积神经网络的可视化卷积神经网络学到的表示非常转载 2022-05-19 18:18:50 · 361 阅读 · 0 评论 -
《python深度学习》笔记(十八):训练一个卷积神经网络
1.造成过拟合的原因:①.训练集太少,导致无法训练出能够泛化新数据的模型。②.训练集和测试集的数据分布不一致。③.模型本身特别复杂,深度太大。2.解决过拟合的方法:①针对训练集太少,可以增加训练数据。②针对模型复杂,可以降低模型复杂度。③权重正则化,这是解决过拟合的常用方法。④dropout正则化,迭代过程中,随机丢弃神经网络的神经元。⑤early stop,训练过程中,如果训练误差继续减小,但测试误差已经开始增加,此时停止训练。⑥BN,在每层之间加上神经元的权重调成正态分布的正则化层。.原创 2022-05-19 16:26:02 · 948 阅读 · 0 评论 -
《python深度学习》笔记(十七):卷积神经网络基础
①训练参数少,无论你的输入图像是多少维,你所需要训练的参数基本上与卷积层中使用的 filter 中的参数相关 ②在卷积层中,同一个 filter 可以检测出图像中不同位置的边缘 ③在卷积层中,输出矩阵的每一个单元值都只与输出矩阵的某块区域(而非全部区域)相关原创 2021-12-25 14:22:39 · 1685 阅读 · 0 评论 -
《python深度学习》笔记(十六):softmax和sigmoid
softmax:softmax的计算的是一个比重,是一个针对输出结果归一化的过程,所以很多文献里也称作softmax层。softmax一般用于多分类的结果,一般和one-hot的真实标签值配合使用,大多数用于网络的最后一层;sigmoid:sigmoid只是对每一个输出值进行非线性化,只是一个非线性激活过程,所以一般称为激活函数。sigmoid是原本一种隐层之间的激活函数,但是因为效果比其他激活函数差,目前一般也只会出现在二分类的输出层中,与0 1真实标签配合使用。原创 2021-12-25 13:57:26 · 971 阅读 · 0 评论 -
《python深度学习》笔记(十五):数据向量化
神经网络的训练通常需要大量的数据,而大量的数据意味着计算机需要有强大的计算能力。为了减少神经网络的训练时间,通常我们会对数据进行向量化,用矩阵运算代替for循环原创 2021-12-25 11:47:07 · 670 阅读 · 0 评论 -
《python深度学习》笔记(十四):指数移动平均值EMA
EMA在数据量小或者数据不稳定或者batch_size小的情况下尤其有用比如回归问题的波士顿房价数据集,还有使用预训练的CNN中batch_size=20比较小。或者看曲线,那种包含噪声,波动很大,或者纵轴范围较大,数据方差较大的图像,为了使曲线变得平滑,更具可读性,所以使用EMA原创 2021-12-25 11:18:57 · 3925 阅读 · 0 评论 -
《python深度学习》笔记(十三):正则化
正则化,或者是规范化,英文翻译为Regularization。什么是规则?考试中不能带手机,这就是规则,一个限制。同理,在深度学习中,正则化就是说给损失函数加上一些限制,通过这种规则去规范他们再接下来的循环迭代中,不要自我膨胀。深度学习中,如果参数过多,模型过于复杂,容易造成过拟合。即模型在训练样本数据上表现的很好,但在实际测试样本上表现的较差,不具备良好的泛化能力。为了避免过拟合,最常用的一种方法是使用使用正则化,例如 L1 和 L2 正则化。原创 2021-12-25 10:41:05 · 1964 阅读 · 0 评论 -
《python深度学习》笔记(十二):动量
在随机梯度的学习算法中,每一步的步幅都是固定的,而在动量学习算法中,每一步走多远不仅依赖于本次的梯度的大小还取决于过去的速度。速度v是累积各轮训练参的梯度,其中越大,依赖以前的梯度越大。假如每轮训练的梯度方向都是相同的,和小球从斜坡滚落,由于但衰减因子的存在,小球并不会一直加速,而是达到最大速度后开始匀速行驶,这里假设每轮获得的梯度都是相同的,那么速度最大值为: 原创 2021-12-19 15:32:57 · 2635 阅读 · 2 评论 -
《python深度学习》笔记(十一):损失函数
损失函数的一般表示为L(y,f(x)),用以衡量真实值 y和预测值 f(x)之间不一致的程度,一般越小越好。为了便于不同损失函数的比较,常将其表示为单变量的函数,在回归问题中这个变量为[y-f(x)] :残差表示,在分类问题中则为yf(x) :趋势一致。原创 2021-12-17 00:32:13 · 4836 阅读 · 0 评论 -
《python深度学习》笔记(十):激活函数
神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数。激活函数(Activation functions)对于人工神经网络 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。原创 2021-11-28 13:52:31 · 2447 阅读 · 0 评论 -
《python深度学习》笔记(九):深度学习基础总结
原创 2021-11-27 19:52:33 · 357 阅读 · 0 评论 -
《python深度学习》笔记(八):回归问题
分类问题的目标:预测输入数据点所对应的单一离散变量。回归问题的目标:预测一个连续值而不是单一的标签。例如,温度预测、房价预测。1.数据集:波士顿房价数据集该数据集包含的数据点相对较少,只有506个,分为404个训练样本和102个测试样本。输入数据的每个特征都有不同的取值范围。# 1.加载数据集from keras.datasets import boston_housing(train_data, train_targets), (test_data, test_targets) =原创 2021-11-27 17:23:10 · 2545 阅读 · 0 评论 -
《python深度学习》笔记(七):多分类问题
本节使用路透社数据集,它包含许多新闻及其对应的主题,由路透社在1986年发布。它是一个简单的、广泛使用的文本分类数据集。包括46个主题:某些主题的样本更多,但训练集中每个主题都至少10个样本。因为有多个类别,所以这是多分类问题。因为每个数据点只能划分到一个类别,所以这又是单标签、多分类问题。完整代码实现:from keras.datasets import reutersimport numpy as np# 第一步:加载数据(train_data, train_labels), (原创 2021-11-24 13:54:22 · 2236 阅读 · 0 评论 -
《python深度学习》笔记(六):二分类问题
二分类问题可能是应用最广泛的机器学习问题,它指的是所有数据的标签就只有两种,正面或者负面。在这个例子中,我们学习根据电影评论的文字内容将其划分为正面或者负面。数据集介绍:本节使用IMDB数据集,它包含来自互联网电影数据库(IMDB)的50000条严重两极分化的评论。数据集被分为用于训练的25000条评论和用于测试的25000条评论,训练集和测试集都包含50%的正面评论和50%的负面评论。为什么要将训练集和测试集分开?因为你不应该将训练机器学习模型的同一批数据再用于测试模型!模型在训练数原创 2021-11-23 20:52:30 · 7343 阅读 · 0 评论 -
《python深度学习》笔记(五):神经网络的核心组件
训练神经网络主要围绕以下四个部分: 层,用于合并成网络(或模型)。 输入数据和相应的目标。 损失函数,定义了用于学习的反馈信号。 优化器,决定了学习如何进行。 层:深度学习的基础组件神经网络的基础数据结构是层,层是一个数据处理模块,它接受一个或多个张量作为输入,并输出一个或多个张量。有些层是无状态的,但更常见的层有一个状态:层的权值。不同的层适用于不同的张量格式和不同类型的数据处理。简单的矢量数据存储在二维张量的形状(samples,features)中,原创 2021-11-22 23:20:12 · 1129 阅读 · 0 评论 -
《python深度学习》笔记(四):神经网络示例
下面介绍一个简单神经网络对MNIST数据集的分类问题,其代码实现主要分为5个步骤:神经网络示例步骤:加载数据集:首先加载MNIST数据集,也就是需要输入到神经网络模型中的输入数据。把数据分为训练集和测试集,在训练数据上进行学习,在测试数据上进行测试。 准备数据:将数据进行预处理,使其变换为神经网络要求的形状,并缩放到所有值都在0~1之间,这样才能让神经网络更好训练数据。这里使用to_categorical()函数(将类别向量转换为二进制矩阵)对标签编码 构建网络:使用Sequential()函数原创 2021-11-21 21:38:44 · 1328 阅读 · 0 评论 -
《python深度学习》笔记(三):基于梯度优化
1.张量运算的导数:梯度 梯度(gradient)是张量运算的导数。它是导数这一概念向多元函数导数的推广。多元函数是以张量作为输入的函数。 假设有一个输入向量 x、一个矩阵 W、一个目标 y 和一个损失函数 loss。你可以用 W 来计算预测y_pred,然后计算损失,或者说预测值 y_pred 和目标 y 之间的距离。 y_pred = dot(W, x) loss_value = loss(y_pred, y) 如果输入数据 x 和 ...原创 2021-11-21 20:20:23 · 906 阅读 · 0 评论 -
《python深度学习》笔记(二):神经网络数据表示
1.神经网络的数据表示:张量张量的定义:张量其实就是一个数据容量,它包含的数据几乎是数值数据,因此它也是数字的容器。神经网络示例中的数据都是储存在多维numpy数组(张量)中。一般来说,所有机器学习系统都是使用张量作为基本数据结构。张量的种类:标量(0D张量):仅包含一个数字。在numpy中,一个float32或float64的数字就是一个标量张量。 向量(1D张量):数字组成的数组叫作向量或一维张量。 矩阵(2D张量):向量组成的数组叫作矩阵或二维张量。 3D张量与更高维的张量:将多原创 2021-11-21 18:57:56 · 765 阅读 · 0 评论 -
《python深度学习》笔记(一):深度学习引言
1 什么是深度学习?1.1 什么是”深度“?“深度”指的是一系列连续的表示层,通常包含数十个甚至上百个连续的表示层。1.2 什么是”学习“?“学习”指的是为神经网络的所有层找到一组权重值,使得网络能够将每个示例输入与其目标正确的一一对应。2 深度学习的工作原理层:是深度学习的基础组件,是一个数据处理模块,多个层就组成了网络。将预处理好的数据x输入到神经网络中,再通过一系列的数据变换来实现输入数据到预测值的映射,而每层的变换由一组权重w来进行实现。损失函数:网络如...原创 2021-11-18 21:04:02 · 1009 阅读 · 0 评论