
深度学习的随记
文章平均质量分 84
深度学习的随意记录
夏天是冰红茶
目前正在考研,今年希望一次上岸
展开
-
特征融合后通道维度增加,卷积层和线性层两种降维方式
特征融合是深度学习模型设计中提升表达能力的关键步骤,主要有三种基础方法:逐元素相加、直接乘积、通道维度拼接,从我个人的使用角度来看,Concat要更加好用。我觉得相加和乘积属于是不可逆的操作,直接融合会导致原有信息丢失,无法再分离,如果两个特征图的响应模式差异较大,这两种方式会引入噪声冗余信息。在通道维度拼接(如torch.cat(dim=1))则会保留所有原始特征,只不过Concat会增加参数量,所以我们需要对其进行降维,本篇将会讲解一写关于卷积层和线性层两种降维方式。原创 2025-04-02 15:07:43 · 588 阅读 · 0 评论 -
激活函数介绍
神经网络当中的激活函数用来提升网络的非线性,以增强网络的表征能力。它有这样几个特点:有界,必须为非常数,单调递增且连续可求导。我们常用的有sigmoid或者tanh,但我们都知道这两个都存在一定的缺点,有的甚至是无脑用Relu。所以今天就来学习并实现一些其他的激活函数。原创 2023-10-04 17:29:20 · 529 阅读 · 0 评论 -
多分类中混淆矩阵的TP,TN,FN,FP计算
创建混淆矩阵# 寻找GT中为目标的像素索引# 统计像素真实类别t[k]被预测成类别p[k]的个数@property"""计算混淆矩阵的TN, FP, FN, TP"""if n == 2:if n > 2:"""主要在eval的时候使用,你可以调用ravel获得TN, FP, FN, TP, 进行其他指标的计算计算全局预测准确率(混淆矩阵的对角线为预测正确的个数)计算每个类别的准确率计算每个类别预测与真实目标的iou,IoU = TP / (TP + FP + FN)"""原创 2023-09-16 23:25:10 · 7270 阅读 · 1 评论 -
混淆矩阵细致理解
混淆矩阵(Confusion Matrix)是深度学习和机器学习领域中的一个重要工具,用于评估分类模型的性能。它提供了一个清晰的视觉方式来展示模型的预测结果与真实标签之间的关系,尤其在分类任务中,帮助我们了解模型的强项和弱点。模型正确地预测了正类别的样本数量。模型正确地预测了负类别的样本数量。模型错误地将负类别的样本预测为正类别的数量。模型错误地将正类别的样本预测为负类别的数量。你可以选择看我之前写过的这一篇。其实很好理解,比如TP,它就是正确的预测了正确的样本,FP就是错误的预测为了正确的样本。原创 2023-09-16 00:14:58 · 3514 阅读 · 0 评论 -
Dice系数衡量图像分割中的重叠区域
Dice系数和mIoU是均是语义分割的评价指标,今天这里就着重讲讲Dice系数,顺便提一下Dice Loss,以后有时间区分一下在语义分割中两个常用的损失函数,交叉熵和Dice Loss。原创 2023-09-04 20:35:07 · 1313 阅读 · 0 评论 -
深度学习之双线性插值
双线性插值在图像处理中的意义是通过在两个方向上的插值,更准确地估计新像素的值,以改善图像的质量、平滑边缘,并保持细节,从而实现图像放大、缩小、旋转等操作的高质量效果。在右边的等式中的字母f(Q11)、f(Q12)、f(Q21)、f(Q22)、x1、x2、x都是已知的,求出的f(x,y1)与f(x,y2)即为R1、R2的像素值。但它使用的是显示循环,对于计算量较高,这里我对代码进行了改进,采用了网格坐标、数组广播和矩阵运算等技巧,使得插值过程更加高效。在右边的等式中的字母y1、y2、y都是已知的,原创 2023-08-04 01:11:58 · 2518 阅读 · 0 评论 -
基于torchvision的CV迁移学习
定义数据集#在线加载数据集#更多数据集:https://pytorch.org/vision/stable/datasets.html#更多数据增强:https://pytorch.org/vision/stable/transforms.html#原本是32*32的,缩放到300*300,这是为了适应预训练模型的习惯,便于它抽取图像特征#随机左右翻转,这是一种图像增强,很显然,左右翻转不影响图像的分类结果#图像转矩阵数据,值域是0-1之间。原创 2023-07-15 20:21:26 · 649 阅读 · 0 评论 -
CNN分类图像Cifar10
我们对数据集进行一个封装,便于后续的遍历#定义数据集这里来看下数据的样例,可以看到在一批数据中,x是8张图片3通道32x32的尺寸,y就是八个数字,分别表示了x当中8张图片分别属于哪一类。先来看初始化部分,这个神经网络模型一共包括了6个层,分别是三个CNN,一个pooling,1个relu,还有一个FC,这些神经网络层我们会在后面的计算时用到#520的卷积层stride=2,padding=0)#311的卷积层stride=1,padding=1)#710的卷积层stride=1,原创 2023-07-15 17:08:55 · 1470 阅读 · 0 评论 -
全连接神经网络:分类与回归示例
定义数据集一般是创建一个class继承torch.utils.data.Dataset,在这个class里面要定义三个函数,分别是init、len、getitem。init一般用于数据集的初始化,预处理等操作;len函数要输出这个数据集有多少条数据,按理来说我们这个测试数据是动态生成的,理论上来说有无穷多条,但在这样还是要给pytorch一个明确的数量;getitem函数是要根据序号i来获取一条数据。#正常应该在这里执行数据的加载,处理等工作pass#定义数据的条数return 500。原创 2023-07-15 10:45:23 · 2526 阅读 · 0 评论 -
入门Pytorch:对Tensor的操作
在过去的一段时间里,我专注于图像处理和裂缝检测方面的研究。最近这段时间也把裂缝的二维检测做好了,效果也是比较令我满意,在项目的最后阶段,深度学习和PyQt的UI界面制作是需要重点学习的内容,我需要在这较短的时间内去好好学习,拿出成果来。这篇博客的主要的目的是为了方便我个人查找api,在不断的查询中熟悉pytorch的基础操作。原创 2023-07-14 23:48:13 · 903 阅读 · 1 评论 -
批归一化(Batch Normalization)
Batch Normalization批量归一化方法可以加速神经网络的收敛,使训练过程中对学习率和参数初始化更加鲁棒,但它也有一些缺陷。bn算法仅在batch中包含样本数量足够多的时候才有效。对于循环神经网络(RNN)或序列数据(Sequence)性能较差。分布式运算也有影响。为了应对bn算法的缺陷,后续又提出了Layer Normalization:在每一个样本特征空间内的归一化。Instance Normalization:在每一个样本特征空间内逐通道的归一化。Group Normalization:原创 2023-07-10 14:51:39 · 3158 阅读 · 0 评论 -
非线性激活函数
在神经网络的计算中,无非就是矩阵相乘,输入的是线性,不论输出层有多少,相当于n个矩阵相乘,和一层相乘所获取的信息差距不大,那我们无非是要引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中,增加了神经网络模型泛化的特性。早期研究神经网络主要采用sigmoid函数或者tanh函数,输出有界,很容易充当下一层的输入。近些年Relu函数及其改进型(如Leaky-ReLU、P-ReLU、ELU等),由于计算简单、效果好所以在多层神经网络中应用比较多。原创 2023-07-09 11:12:56 · 422 阅读 · 0 评论 -
CNN池化总结(最大池化与平均池化)
池化操作会减少特征图的细节信息,因此在某些情况下可能会导致信息丢失。在最新的研究中,有些模型在某些层次上已经开始避免使用池化操作,而是采用卷积操作来进行降维和尺寸缩减。这些新的方法通常被称为"strided convolutions"(步幅卷积)或"convolutional stride"(卷积步幅),它们在一定程度上取代了传统的池化操作。这些新方法的目标是通过卷积操作同时实现特征提取和尺寸缩减的效果,以避免信息丢失。原创 2023-06-29 19:48:33 · 15378 阅读 · 0 评论 -
CNN卷积类型总结(标准卷积、空洞卷积、反卷积、深度可分离卷积、分组卷积等)
对标准卷积、空洞卷积、反卷积、深度可分离卷积、分组卷积等进行总结。上学时,卷积常在各个课程中出现,现代、信号与系统这些,加上前面学习深度学习中有使用过卷积,但具体是什么情况还是没有明白,我觉得问题有二,其一是简单考试可能卷积都考不到,没有仔细思考过具体前后的实现过程。其二是本人天资比较愚钝,理解能力没有到位。这里结合着pytorch,力求能把自己搞懂!原创 2023-06-29 18:59:02 · 2954 阅读 · 0 评论 -
机器视觉中的目标检测精度评价指标
这一篇主要是了解一下我自己项目上的主要技术指标。在目标检测领域中,存在着许多的精度评价指标,需要依据本身的应用场景选择更合适的评价指标。准确度(Accuracy)、精确率(Precision)、召回率(Recall)、IoU(Intersection over Union)。分类精度:比如准确度(Accuracy),精度(Precision),召回率(Recall Rate), PR 曲线,AP,mAP等;定位精度:比如 IoU;运行速度:比如 fps,帧率,一秒处理几张图。原创 2023-03-27 20:51:06 · 1851 阅读 · 0 评论 -
解决d2l包下载不了的问题
d2l包是李沐老师等人开发的《动手深度学习》配套的包,最初的时候,我并没有安装的想法,可在代码实现方面,常常要自己写函数实现同样的效果,且因为用于Tensor数据的一些转换,让人颇感吃力(比如显示图片)。所以,今天在尝试安装,具体的方法李沐老师也给出了,但我的频繁报错,所有大家不妨先去看看李沐老师提供的方法。下载这个文件即可,下载的位置找到后,将其移动到需要安装的虚拟环境当中。当你获得下面相似的内容,就说明了d2l包下载成功。这个需要下载的东西较多,耐心等待。原创 2023-01-17 22:42:09 · 12712 阅读 · 27 评论 -
数据的预处理
在使用深度学习时,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。 在python中常用的数据分析工具中,我们通常使用pandas、numpy等。本节将会介绍使用pandas预处理原始数据,并将原始数据转换为张量格式的步骤。pandas软件包是Python中常用的数据分析工具中,pandas可以与张量兼容。用pandas处理缺失的数据时,我们可根据情况选择用插值法和删除法。原创 2023-01-12 22:58:58 · 434 阅读 · 0 评论 -
训练、测试和验证集的说明
接下来,我将在这篇里面讨论在训练和测试神经网络期间使用的不同数据集。出于模型的训练和测试目的,我们应该将数据分解为三个不同的数据集:训练集、验证集和测试集。这些数据集将包含以下内容:数据集用于训练模型,训练的目标是将模型拟合到训练集,同时仍泛化为看不见的数据;验证集在训练期间用于检查模型的泛化程度;测试集用于应用到生产环境之前测试模型的最终泛化能力。原创 2023-01-04 01:12:55 · 3253 阅读 · 0 评论 -
CNN经典模型总结(LeNet-5、AlexNet、VGG、GoogLeNet、ResNet)
以下介绍了LeNet-5、AlexNet、VGG、GoogLeNet、ResNet等,它们通常用于图像的数据处理,那么卷积神经网络是否应用于自然语言分类任务呢,其实还有一种利用CNN进行自然语言处理的网络结构——TextCNN网络,感兴趣的大家可以去了解。原创 2023-01-03 13:21:35 · 2878 阅读 · 0 评论 -
图像以Tensor方式输入CNN
CNN的输入形状通常为4,分别用一个字母代表每个轴上的长度,那么它的shape为:[B,C,H,W]我们从右往左看:对于H、W,我们应当能想到它是输入图像的长度与宽度,比如在fashion图像数据集里的图像数据为28*28、VGG-16神经网络所使用的图像大小224*224。C表示的颜色通道数,常见的RGB通道为3,而灰度图像的通道为1。B表示的是一个批量的大小,在神经网络中,我们通常使用批量的样本而不是单一的样本,在这里就是说一次我会输入B张图片。原创 2023-01-02 23:33:21 · 1148 阅读 · 0 评论 -
UCI German Credit 数据集完成logistic回归实战
Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。Sigmod函数是最常见的logistic函数,因为Sigmod函数的输出的是是对于0~1之间的概率值,当概率大于0.5预测为1,小于0.5预测为0,所以这里会用到它。原创 2023-01-02 21:50:11 · 3891 阅读 · 3 评论 -
神经网络与激活函数
本篇将要简单介绍神经网络,并对常见的激活函数进行归纳总结。使用的是PyTorch框架。原创 2023-01-01 17:36:56 · 1281 阅读 · 4 评论 -
卷积神经网络CNN的整体介绍
卷积神经网络由一个或多个卷积层和顶端的全连通层(也可以使用1x1的卷积层作为最终的输出)组成一种前馈神经网络。一般的认为,卷积神经网络是由Yann LeCun大神在1989年提出的LeNet中首先被使用,但是由于当时的计算能力不够,并没有得到广泛的应用,到了1998年Yann LeCun及其合作者构建了更加完备的卷积神经网络LeNet-5并在手写数字的识别问题中取得成功,LeNet-5的成功使卷积神经网络的应用得到关注。原创 2022-12-31 22:17:46 · 1206 阅读 · 6 评论 -
神经网络的搭建
首先,这里主要是能够建立一个神经网络,不免会用到torch.nn,所以涉及到的会有讲解,没有用到的就我也不是很了解的。当然在这里我提供了链接,方便进行学习。。原创 2022-12-31 19:22:56 · 1711 阅读 · 4 评论 -
PyTorch的数据类型Tensor
Tensor,即张量,它是PyTorch中基本的操作对象,简单的理解就是多维矩阵。Tensors与Numpy中的 ndarrays类似,但是在PyTorch中 Tensors 可以使用GPU进行计算。每个章节涉及的函数已经归纳在下方,可以随时查找用法。希望你能在此篇中有所收获原创 2022-12-27 16:03:20 · 1989 阅读 · 4 评论 -
常见的损失函数总结
损失函数是用来估量模型的预测值与真实值的不一致程度,它是一个非负实值函数。我们训练模型的过程,就是通过不断的迭代计算,使用梯度下降的优化算法,使得损失函数越来越小。损失函数越小就表示算法达到意义上的最优。直白来说,就是用它来描述我们模型的鲁棒性,损失函数越小,模型的鲁棒性就越好。由于我是以学习pytorch入门,所以这里来看看pytorch的内置函数。原创 2022-12-23 23:38:53 · 1664 阅读 · 0 评论 -
深度学习基础与线性回归实例
介绍:这是一个教育对收入影响的数据,从图像的走势来看,它是具有一个线性关系,即受教育年限越长收入越高,这样我们可以通直线来抽象出它们的关系。接下来,我们将会介绍一些方法,分别是单变量线性回归算法、成本函数与损失函数、梯度下降算法。首先要提到的是单变量线性回归算法,我们有这样一个函数我们使用f(x)这个函数来映射输入特征值和输出值。这个时候问题就转化为了,这条直线需要画在什么地方才合适,或者我们说w和b该取什么样的值呢?原创 2022-11-27 09:54:17 · 1148 阅读 · 2 评论