
深度学习
文章平均质量分 75
从0学起,慢慢应用
落难Coder
这里是我的笔记,而你恰好看到
展开
-
理解 PyTorch 中的 logits 和交叉熵损失函数
logits是模型输出的未归一化预测值,通常是全连接层的输出。在分类任务中,logits 的形状通常为,其中batch_size是一个批次中的样本数,num_labels是分类任务中的类别数。logits是模型的输出。假设logits的形状为,例如(32, 3),表示每个批次有32个样本,每个样本有3个类别的预测值。交叉熵损失函数()是一种常用于分类任务的损失函数。它衡量的是预测分布与真实分布之间的差异。具体而言,它会计算每个样本的预测类别与真实类别之间的距离,然后取平均值。原创 2024-10-09 14:33:12 · 578 阅读 · 0 评论 -
Transformer 理论与代码实践,一步一步详细剖析
在现在的大模型时代,核心还得是Transformer,Transformer是由谷歌于2017年提出,最初用于机器翻译的神经网络模型,在此衍生出了一系列的模型,BERT、T5、GPT、GLM、BLOOM、LLaMa等等从小模型到大模型都少不了他。Transformer最经典的模型结构图还得是论文中原汁原味的图关于这张图的讲解在其他的回答中有很多,简单总结下,左边是编码器(Encoder),右边是解码器(Decoder),N× 表示进行了 N 次堆叠。接下来分别对每个模块进行简述以及代码实现。原创 2024-08-06 21:35:12 · 1256 阅读 · 0 评论 -
使用YOLOv8进行姿态估计(ONNX推理)
【代码】使用YOLOv8进行姿态估计(ONNX推理)原创 2024-08-02 19:22:57 · 429 阅读 · 0 评论 -
PyTorch保存和加载模型的两种方式
与Tensorflow、Keras等框架一样,Pytorch也提供了两种保存模型的方式:只保存模型参数保存完整模型。原创 2023-02-13 23:46:00 · 379 阅读 · 0 评论 -
【深度学习】如何分配训练集、验证集、测试集比例
对于传统机器学习阶段(数据集在万这个数量级),一般分配比例为训练集和测试集的比例为7:3或是8:2。为了进一步降低信息泄露同时更准确的反应模型的效能,更为常见的划分比例是训练集、验证集、测试的比例为6:2:2。对于小规模样本集(几万量级),常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。原创 2023-02-13 23:38:37 · 11330 阅读 · 2 评论 -
何凯明最新一作MAE(mask掉图片的部分信息也能重建识别)
本文表明,掩码自编码器(Masked Autoendoers, MAE)是可用于计算机视觉的可扩展自监督学习器。MAE手段很简单:我们将输入图像分块并随机掩码,重建丢失的像素。它基于两个核心设计:1、我们开发了一个非对称的编码-解码架构,其中编码器只在可见的图像子块上进行操作,以及一个轻量级的解码器,它从潜在表征和掩码令牌重构原始图像;2、我们发现高比例的图像遮挡,例如75%,会产生一个具有重要意义的自监督任务。结合这两种设计使我们能够有效并高效地训练大模型:我们提升训练速度三倍之多并提升精度。原创 2022-12-22 21:54:32 · 1465 阅读 · 0 评论 -
外部注意力机制与内部注意力机制
过高的问题依然存在。为此作者提出了外部注意力模块,计算输入像素与外部的记忆矩阵单元M之间的注意力。相比自注意力机制,外部注意力中的Key与Value被拿到了外部,不再由特征投射产生。自注意力是注意力机制的一种特殊情况,其核心思想为通过计算特征内部元素之间的联系来获得大范围内的依赖关系。而在外部注意力中,key被拿到了网络外部,因此可以习得数据集的全局状况。这里的M为一个与输入无关的可学习参数,作为数据集相关的记忆器。注意力图是通过矩阵相乘来计算的,对于输入特征的尺度敏感。与自注意力不同的是,上式中的。原创 2022-12-14 21:33:35 · 1797 阅读 · 0 评论 -
读懂ShuffleNet V2
深度卷积神经网络的架构创新显著的提升了在ImageNet数据集上的分类准确率,如VGG、GoogleNet、ResNet、DenseNet、ResNeXt、SE-Net以及自动网络架构搜索获得的方案。然而除了准确率,计算复杂度是另一个重要的考虑因素。真实场景应用更加关注在给定运算平台的前提下,如何利用限的资源获得最佳的准确率。这种思路催生了一系列轻量级的架构设计如Xception、MobileNet、ShuffleNet与CondenseNet。原创 2022-12-14 21:23:27 · 889 阅读 · 0 评论 -
半监督学习、半监督生成模型与半监督低密度分离
所给的数据有的是有标签的,而有的是没有标签的。常见的两种半监督的学习方式是直推学习(Transductive learning)和归纳学习(Inductive learning)。直推学习(Transductive learning):没有标记的数据是测试数据,这个时候可以用test的数据进行训练。这里需要注意,这里只是用了test数据中的feature而没有用label,所以并不是一种欺骗的方法。归纳学习(Inductive learning):没有标签的数据不是测试集。原创 2022-11-26 13:18:57 · 931 阅读 · 0 评论 -
【IRG知识蒸馏】:ResNet50蒸馏ResNet18实战
复杂度的检测模型虽然可以取得SOTA的精度,但它们往往难以直接落地应用。模型压缩方法帮助模型在效率和精度之间进行折中。知识蒸馏是模型压缩的一种有效手段,它的核心思想是迫使轻量级的学生模型去学习教师模型提取到的知识,从而提高学生模型的性能。已有的知识蒸馏方法可以分别为三大类:模型没有用pytorch官方自带的,而是参照以前总结的ResNet模型修改的。ResNet模型结构如下图:ResNet18, ResNet34模型的残差结构是一致的,结构如下:代码如下:resnet.py主要修改了输出结果,将每转载 2022-11-18 19:57:26 · 1536 阅读 · 0 评论 -
【RKD知识蒸馏】:CoatNet蒸馏ResNet提升训练精度
知识蒸馏(Knowledge Distillation),简称KD,将已经训练好的模型包含的知识(”Knowledge”),蒸馏(“Distill”)提取到另一个模型里面去。转载 2022-11-16 01:54:28 · 274 阅读 · 0 评论 -
【知识蒸馏】使用CoatNet蒸馏ResNet图像分类模型
【知识蒸馏】使用CoatNet蒸馏ResNet图像分类模型原创 2022-11-13 00:40:13 · 1143 阅读 · 0 评论 -
ResNet网络详细构建总结
至此,整个ResNet的网络结构就清晰了。计算卷积过程中的参数 W o u t = ( W i n − F + 2 P ) / S + 1 W_{out}= (W_{in} - F + 2P)/S + 1 Wout=(Win−F+2P)/S+1ResNet18层和34层conv3_x、conv4_x、conv5_x中的第一层需要用虚线结构ResNet50层、101层和152层中的conv2_x、conv3_x、conv4_x、conv5_x中的第一层都需要用虚线结构。原创 2022-10-21 00:32:27 · 13965 阅读 · 0 评论