深度学习
文章平均质量分 66
githubcurry
githubcurry
展开
-
Transformer在计算机视觉中的应用-VIT、TNT模型
在VIT中,只针对patch进行了建模,比如一个patch是16*16*C(其中C是特征图个数,可能是256、512等)。每个patch可能有点大了,越大的patch所蕴含的信息就越多,学习起来难度就越大。因此,一方面可以基于patch去做,另一方面还可以把patch再分得细一点,如16*16分成4个4*4。所以TNT的名字就代表了它要做什么,在Transformer里嵌套一个Transformer。原创 2024-03-20 06:30:00 · 1946 阅读 · 0 评论 -
深度学习Top10算法
自2006年深度学习概念被提出以来,20年快过去了,深度学习作为人工智能领域的一场革命,已经催生了许多具有影响力的算法。以下是深度学习top10算法,它们在创新性、应用价值和影响力方面都具有重要的地位。原创 2024-03-11 18:14:47 · 3058 阅读 · 5 评论 -
TensorRT是什么,有什么作用,如何使用
TensorRT 是由 NVIDIA 提供的一个高性能深度学习推理(inference)引擎。它专为生产环境中的部署而设计,用于提高在 NVIDIA GPU 上运行的深度学习模型的推理速度和效率。以下是关于 TensorRT 的详细介绍:TensorRT 是 NVIDIA 推出的用于深度学习推理加速的高性能推理引擎。它可以将深度学习模型优化并部署到 NVIDIA GPU 上,实现低延迟、高吞吐量的推理过程。TensorRT 主要用于加速实时推理任务,如物体检测、图像分类、自然语言处理等。原创 2024-03-08 17:35:40 · 2451 阅读 · 0 评论 -
Gradio入门详细教程
fn=greet,# 自定义输入框# 具体设置方法查看官方文档要获得额外的样式功能,您可以设置行内css属性将任何样式给应用程序。如下所示。#修改blocks的背景颜色。原创 2023-12-15 12:36:26 · 1202 阅读 · 0 评论 -
如何下载CIFAR10数据集
CIFAR10数据集的下载及使用使用torchvision下载MINIST及配置踩坑笔记CIFAR10数据集下载原创 2023-11-02 09:56:51 · 474 阅读 · 0 评论 -
卷积网络中,卷积核的作用
卷积核起着提取输入数据中的局部特征的作用。它通过滑动窗口的方式在输入数据上进行卷积操作,提取出不同位置的局部特征,并生成对应的特征图。这些特征图包含了输入数据的不同抽象层次的特征信息,具有重要的表征能力。除了上述常见的卷积核之外,还可以根据具体任务和需求设计出更加复杂和专用的卷积核,以适应各种不同类型的特征提取任务。在卷积神经网络中,卷积核是需要进行随机初始化的。随机初始化的目的是使得每个卷积核可以学习到不同的特征。原创 2023-10-05 10:33:04 · 366 阅读 · 0 评论 -
pytorch中transform.Compose()用法
是 PyTorch 中 torchvision 包提供的一个函数,用于将多个图像变换操作组成一个变换操作序列。作为输入,并返回组合后的变换操作。这个组合操作可以应用于数据增强,也可以应用于测试时对数据的预处理。这样,在数据加载时就会自动应用相应的图像变换操作序列,从而实现了数据增强和预处理的效果。类并传入相应的变换操作序列,得到了数据集对象。这些数据集对象可以被用于实例化 PyTorch 的。分别定义了两个不同的变换操作序列,分别应用于训练数据和测试数据。函数被用于定义多个图像变换操作的序列。原创 2023-10-05 09:15:00 · 836 阅读 · 1 评论 -
如何安装并启动jupyter notebook
Jupyter Notebook 可以使用多种语言(Python、R、Julia 等)开发交互式笔记本,因此,它会依赖于不同的包和库。除此之外,还有许多其他的 Python 包和库,这些包和库可以扩展 Jupyter 笔记本的功能,并使其更适合特定的应用场景。在安装 Jupyter Notebook 时,这些包和库通常会自动安装或更新到最新版本。如果需要使用这些包或库中的特定功能,需要手动安装它们。原创 2023-10-03 18:20:55 · 3905 阅读 · 1 评论 -
目标检测任务中,图片数据进行数据增强后,对应的标签如何修改,python实现
具体地说,对于图像的平移、旋转、缩放等操作,需要将对应的标注框(bounding box)的位置和大小一同进行变换。总之,在进行数据增强时,需要保证数据和标注框的一致性,确保数据与其对应的标注框信息的正确性。通常情况下,我们会使用一些现成的开源库来进行数据增强,这些库通常已经实现了标注框和图像一起变换的功能,我们只需要按照它们的接口使用即可。需要根据具体的任务需求和数据特点选择适合的库和增强操作。在目标检测任务中,有一些常用的开源库可以用于数据增强,并且这些库通常已经实现了标注框和图像一起变换的功能。原创 2023-09-21 09:20:35 · 845 阅读 · 0 评论 -
python使用openvc库进行图像数据增强
在这个示例代码中,我们使用OpenCV库来加载和处理图像。我们定义了几个常用的数据增强操作函数,包括水平翻转、垂直翻转、随机旋转、随机裁剪和添加随机噪声。然后,我们遍历原始图像路径下的所有图像,对每张图像进行数据增强操作,并保存到增强后图像保存路径。同时,确保将原始图像放在指定的原始图像路径下,并设置好增强后图像的保存路径。请注意,为了运行此代码,您需要安装OpenCV库。原创 2023-09-13 09:52:50 · 510 阅读 · 0 评论 -
val的准确率高于train是过拟合吗
验证集和训练集的规模不同:有时候,验证集的规模较小,这可能导致验证集准确率的波动性较大。由于数量较少的样本更容易受到随机性的影响,所以验证集的准确率可能会高于训练集,但不一定表示过拟合。如果以上情况都排除,并且验证集的准确率持续高于训练集,那么可能存在过拟合的问题。验证集和训练集的分布不同:如果验证集和训练集的分布存在差异,例如验证集包含更易于分类的样本,那么在验证集上的准确率可能会高于训练集。数据集划分不一致:如果数据集的划分不一致或随机性较大,即使模型没有过拟合,也可能导致验证集的准确率高于训练集。原创 2023-09-11 22:24:30 · 401 阅读 · 0 评论 -
为什么在有一些分类任务中,resnet50的准确率不如resnet18
更深的网络通常有更强的表达能力,可以捕捉到更复杂的特征和模式,这在一些复杂的任务上可能会表现得更好。但同时,更多的参数也增加了过拟合的风险。较小的ResNet18在某些数据集上可能表现得更好,因为它具有适量的参数来处理任务的特征,并且更不容易过拟合。而在更大的数据集上,ResNet50可能由于其更强大的表达能力和更多的参数而获得更好的准确率。在分类任务中,ResNet50和ResNet18是两种不同的卷积神经网络模型,它们的网络结构和参数量不同,因此可能导致它们在准确率上的表现有所差异。原创 2023-09-02 17:10:44 · 1720 阅读 · 0 评论 -
pytorch如何使用Focal Loss
Focal loss是 文章中提出对简单样本的进行decay的一种损失函数。是对标准的的一种改进。F L对于简单样本(p比较大)回应较小的loss。如论文中的图1, 在p=0.6时, 标准的CE然后又较大的loss, 但是对于FL就有相对较小的loss回应。这样就是对简单样本的一种decay。其中alpha 是对每个类别在训练数据中的频率有关, 但是下面的实现我们是基于alpha=1进行实验的。在PyTorch中使用Focal Loss,你可以按照以下步骤进行操作。原创 2023-09-01 16:53:13 · 4007 阅读 · 2 评论 -
深度学习中有哪些超参数,都有什么作用
较小的批量大小可以帮助模型更好地泛化,但可能增加训练时间。较小的学习率可以使模型收敛更稳定,但可能需要更多的训练时间;正则化参数(Regularization):用于控制模型的复杂度。以上只是深度学习中的一些常见超参数,实际应用中可能还会根据具体问题和模型进行调整。这些参数会影响参数更新的方式和速度,从而影响模型的训练过程。较多的迭代次数可以使模型学习更充分,但如果过多,可能导致过拟合。网络结构相关超参数:如层数、每层的神经元数量、激活函数的选择等。卷积神经网络(CNN)中的核大小、步长和填充方式等。原创 2023-08-31 22:12:02 · 1721 阅读 · 0 评论 -
batchsize太大会导致最优解漏掉
简单点说,就是我们一次要将多少个数据扔进模型去训练,这个值介于1和训练样本总个数之间。原创 2023-08-31 16:15:41 · 591 阅读 · 1 评论 -
使用pytorch,冻结resnet50前几层进行迁移学习
然后,通过修改最后一层(全连接层)来适应自己的数据集。接下来,将模型移动到GPU上(如果可用),定义损失函数和优化器,并进行模型训练。在这个例子中,我们加载了预训练的ResNet50模型,并将指定的层参数设置为不需要梯度更新。具体来说,我们冻结了。请根据你自己的数据集和任务适当调整代码。原创 2023-08-01 11:26:04 · 1319 阅读 · 0 评论 -
mac使用conda(anaconda和miniconda一样)安装新版本的torch
使用pytorch给的命令行下载会很慢,因此我们应该修改镜像源,然后再下载torch。原创 2023-07-10 16:27:13 · 1426 阅读 · 0 评论 -
mac使用pip安装2.0.1新版本torch
使用官网下载或者安装pytorch离线版本都非常慢。原创 2023-07-10 16:00:10 · 1229 阅读 · 0 评论 -
使用Pytorch加载预训练模型及修改网络结构
(也就是卷积层)的网络结构。原创 2023-07-10 14:30:21 · 1440 阅读 · 0 评论 -
使用pytorch从零构建一个resnet网络,并配上各个步骤的代码
def ResNet18() : return ResNet(BasicBlock , [ 2 , 2 , 2 , 2 ]) def ResNet34() : return ResNet(BasicBlock , [ 3 , 4 , 6 , 3 ]) # 更多版本的ResNet可以根据需要添加这些代码构建了一个基本的ResNet网络,你可以根据需要调整和扩展。记得在使用时要根据输入数据的通道数和类别数量进行适当修改。原创 2023-07-07 16:55:52 · 297 阅读 · 0 评论 -
Attention,注意力机制
在机器视觉任务中,每一张图片都有重点区域,而非每一个像素对模型理解图片都同等重要。在自然语言处理任务中,每一段文字都有重点词语,而非每一个字对模型理解语句都同等重要。如此,在神经网络模型中引入注意力,让模型把握重点,必是能提升模型的理解能力的!原创 2023-07-06 11:17:00 · 175 阅读 · 0 评论 -
学习率调整策略,学习率预热(warmup)和学习率衰减(Learning Rate Decay)
学习率策略:学习率预热(warmup)和学习率衰减(Learning Rate Decay)通过这样的学习率预热机制,可以使模型在训练初期更好地适应数据,提高训练的稳定性和性能。根据实际需求,可以根据预热阶段的迭代次数、初始学习率和最终学习率来调整预热效果。需要注意的是,学习率 warm-up 的设置可以根据实际情况进行调整。如果初始学习率过大或 warm-up 过短,可能会导致模型训练不稳定或出现梯度爆炸的问题;而如果初始学习率过小或 warm-up 过长,可能会导致模型训练速度过慢。因此,建议根据具体任原创 2023-07-06 10:09:51 · 6032 阅读 · 1 评论 -
深入理解预训练(pre-learning)、微调(fine-tuning)、迁移学习(transfer learning)三者的联系与区别
所以,就是指预先训练的一个模型或者指预先训练模型的过程;就是指将预训练过的模型作用于自己的数据集,并使参数适应自己数据集的过程。原创 2023-07-05 11:12:23 · 20008 阅读 · 4 评论 -
深度学习论文系列--模型细节(持续更新)
一个点的计算结果由上层节点的邻居计算而来,因此,如果gnn足够深,一个节点就可以处理一个较大范围内的信息。原创 2023-06-28 21:16:31 · 204 阅读 · 0 评论 -
SVR(支持向量机)用法介绍
SVR(Support Vector Regression)是支持向量机(SVM)在回归问题中的应用。与SVM分类模型相似,SVR也是一种非概率性算法,通过使用核函数将数据映射到高维空间,并在该空间上寻找最优的超平面与训练数据之间的间隔最大化,得到了回归模型。与传统回归模型不同,SVR将回归问题转化为寻找一个函数逼近真实函数的过程。在实际应用中,可以使用不同的核函数和超参数来调整模型,以得到更好的拟合效果。原创 2023-06-13 16:01:48 · 8174 阅读 · 2 评论 -
cpu、gpu的区别
如上图所示,CPU和GPU的内部构成,可以看出是由不同的架构所组成。原创 2023-06-13 15:42:45 · 788 阅读 · 0 评论 -
深度学习数据处理中,标量、向量、张量的区别与联系
计算机中的标量机是指只是一个数一个数地进行计算的加工处理方法,区别于向量机能够对一批数据同时进行加工处理。标量机比向量机的运算速度慢,因此,向量机更适合于演算数据量多的大型科学、工程计算问题。计算机可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。原创 2023-06-13 09:24:56 · 2754 阅读 · 0 评论 -
M1芯片上训练yolov5出现“PYTORCH_ENABLE_MPS_FALLBACK=1”报错,如何解决
是 PyTorch 中的一个环境变量,其作用是指示 PyTorch 在使用 CUDA 的 MPS(Multi-Process Service)时,是否启用 fallback 模式。然而,由于硬件和软件环境等因素的限制,在某些情况下可能无法正常使用 MPS,例如硬件资源不足、操作系统版本不受支持或驱动程序更新等原因。此时,fallback 模式将会被启用,这使得 PyTorch 可以回退到传统的单进程工作模式,保证程序的正确性和可健壮性。原创 2023-05-26 12:13:38 · 1478 阅读 · 4 评论 -
model.train() 和 model.eval()分别是什么
在训练开始之前写上 model.trian() ,在测试时写上 model.eval()如果模型中有 BN 层(Batch Normalization)和 Dropout,需要在训练时添加 model.train(),在测试时添加 model.eval()。其中 model.train() 是保证 BN 层用每一批数据的均值和方差,而 model.eval() 是保证 BN 用全部训练数据的均值和方差;原创 2023-05-25 10:39:33 · 906 阅读 · 0 评论 -
pytorch如何锁住模型的参数,并且可以自定义锁住几层
首先,我们需要定义神经网络模型。例如,我们可以定义一个包含 4 个卷积层和 3 个全连接层的模型,并将前两个卷积层的参数设为不需要更新(即锁住)。接下来,我们需要将要冻结的层的 requires_grad 设置为 False,并将不需要冻结的层的 requires_grad 设置为 True。属性来固定某些层的参数,从而锁住模型的参数。然后,将需要冻结的参数的 requires_grad 设置为 False,然后通过。通过以上步骤,我们就可以锁住 PyTorch 模型的参数,并自定义需要锁住的层数了。原创 2023-05-18 11:58:28 · 624 阅读 · 0 评论 -
使用tensorboard报错:zsh: command not found: tensorboard
如果已经安装,但仍然找不到 tensorboard 就继续往下看。原创 2023-05-14 11:49:28 · 639 阅读 · 0 评论 -
MobileNet(V1、V2、V3)入门
多了一个注意力机制,加入se模块。原创 2023-05-06 15:49:05 · 1243 阅读 · 0 评论 -
YOLO v3入门图解
先回顾下面这个图,看看是否了解每个步骤的含义。然后再用一个图来总结一下流程,接下来根据输出的目标置信度淘汰一大批包围盒,在使用非极大值抑制继续淘汰一批,最后剩下检测到的目标,下图是这些步骤的简化版本演示图。原创 2023-03-23 15:35:27 · 886 阅读 · 0 评论 -
强化学习、监督学习、无监督学习是什么
强化学习是机器学习学习方式的一种,是让计算机实现从一开始完全随机的进行操作,通过不断试错的方式去总结出每一步的最佳行为决策,基于环境给予的反馈,去调整自己的行为决策,从而对未来的行为给出最优决策。强化学习已广泛应用于。原创 2023-03-23 14:49:10 · 1326 阅读 · 0 评论 -
深度学习中backbone、head、neck等概念
主干网络一般不是我们自己设计的网络,因为这些网络已经证明了在分类问题上的特征提取能力是很强的,在用这些网络作为backbone的时候,都是直接加载官方已经训练好的模型参数,后面接着我们自己的网络,让网络的这两个部分同时训练,加载的backbone模型已经具有特征提取能力了,在我们的训练过程中,会对他进行微调,使得其更适合于我们自己的任务。bottleneck是瓶颈的意思,通常指的是网网络输入的数据维度和输出的维度不同,输出的维度比输入的小了许多,就像脖子一样,变细了。原创 2023-02-27 10:17:46 · 2414 阅读 · 0 评论 -
pytorch保存提取net的不同文件格式pkl和pth
不过,如果应用场景不是在这里,这两种格式的文件还是有区别的,.pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西,其实就是以二进制形式存储的,如果去read这些文件,则需要用’rb’而不是’r’模式。如果使用torch.save方法来进行模型参数的保存,那保存文件的后缀其实没有任何影响,结果都是一样的,很多.pkl的文件也是用torch.save保存下来的,和.pth文件一模一样的。原创 2023-02-09 11:17:35 · 542 阅读 · 0 评论 -
Pytorch中的tensor和variable
variable默认是不需要被求导的,即requires_grad属性默认为False,如果某一个节点的requires_grad为True,那么所有依赖它的节点requires_grad都为True。volatilevariable的volatile属性默认为False,如果某一个variable的volatile属性被设为True,那么所有依赖它的节点volatile属性都为True。volatile属性为True的节点不会求导,volatile的优先级比requires_grad高。原创 2023-02-08 19:44:05 · 1338 阅读 · 0 评论 -
深度学习中常见概念(收敛、优化器、学习率、正则化、权重衰退等)
选择最优学习率是很重要的,因为它决定了神经网络是否可以收敛到全局最小值。选择较高的学习率,它可能在你的损失函数上带来不理想的后果,因此几乎从来不能到达全局最小值,因为你很可能跳过它。所以,你总是在全局最小值附近,但是从未收敛到全局最小值。选择较小的学习率有助于神经网络收敛到全局最小值,但是会花费很多时间——因为你在网络的权重上只做了很少的调整。这样你必须用更多的时间来训练神经网络。原创 2022-11-20 15:57:40 · 9451 阅读 · 1 评论 -
深度学习中激活函数的用途
激活函数,即Activation Function,有时候也称作激励函数。它是为了解决线性不可分的问题引出的。但是也不是说线性可分就不能用激活函数,也是可以的。它的目的是为了使数据更好的展现出我们想要的效果。激活函数决定了某个神经元是否被激活,当这个神经元接受到的信息是有用或者无用的时候,激活函数决定了对这个神经元接收到的信息是留下还是抛弃。原创 2022-11-16 12:51:09 · 4292 阅读 · 0 评论 -
机器学习与深度学习
机器学习的定义:翻译过来就是:“一个电脑程序要完成任务(T),如果电脑获取的关于T的经验(E)越多就表现(P)得越好,那么我们就可以说这个程序“学习”了关于T的经验。”简单来说,就是解释什么叫“机器的学习”,输入的经验越多表现的越好,这就叫“学习”。原创 2022-11-15 21:00:59 · 6940 阅读 · 0 评论