![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度学习
文章平均质量分 57
知识推荐号
学习、技能、读书、科研分享
展开
-
计算Dice损失的函数
这段代码是用于计算二分类问题的混淆矩阵(Confusion Matrix)中的True Positives(TP),False Positives(FP)和False Negatives(FN)。在混淆矩阵中,TP表示模型正确预测为正类的数量,FP表示模型错误地预测为正类的数量,FN表示实际为正类但模型没有预测为正类的数量。综上所述,这段代码通过计算TP、FP和FN,来评估模型在二分类任务中的性能。这些值是计算精确度(Precision)、召回率(Recall)和F1得分的关键。原创 2024-06-29 17:07:07 · 555 阅读 · 0 评论 -
python显示神经网络训练时的1batch数据
最后,我们使用Matplotlib来显示这些图片。请注意,我们使用permute方法来改变图片的通道顺序,因为PyTorch的图像通道顺序是CxHxW,而Matplotlib期望的是HxWxC。我们使用DataLoader来加载数据集,并设置batch_size为4,这意味着每个batch包含4个样本。迭代数据集:获取DataLoader的一个迭代器,并遍历这个迭代器来获取每个batch的数据。加载数据集:首先加载你的训练数据集,通常是使用PyTorch的DataLoader。原创 2024-06-15 17:41:44 · 381 阅读 · 0 评论 -
神经网络中图片的多分类,如何计算与目标索引图的损失
在PyTorch中,交叉熵损失函数通常用于nn.CrossEntropyLoss,它 combines nn.LogSoftmax and nn.NLLLoss in one single class. 当你使用nn.CrossEntropyLoss时,你不需要在模型的输出层加nn.Softmax,因为nn.CrossEntropyLoss已经包含了这个操作。在这个例子中,outputs是模型输出的未经softmax的原始值,而targets是与outputs形状相同的。,因为它代表的是类别的索引。原创 2024-05-18 21:29:21 · 289 阅读 · 0 评论 -
深度学习中读取索引图并转成tensor
在Python中,你可以使用像PIL(Python Imaging Library)或者cv2(OpenCV)这样的库来读取索引图(即图像分割的标签图),然后使用torch将NumPy数组转换成PyTorch的Tensor。请确保你的索引图像是正确的格式,并且其中的类别标签是连续的整数,这样它们就可以作为索引来使用。如果你的索引图像使用了不同的颜色来表示不同的类别,你可能需要额外的逻辑来将颜色映射到类别索引上。原创 2024-05-18 21:24:47 · 252 阅读 · 0 评论 -
深度学习中将图片使用transforms.ToTensor()转换后,如何转回来
在上面的代码中,to_tensor用于将PIL图片转换为PyTorch tensor,同时会对图片的像素值进行归一化处理,使其位于[0, 1]区间。to_pil则用于将PyTorch tensor转换回PIL图片,同时会将像素值从[0, 1]区间反归一化到原来的[0, 255]区间。请注意,在进行转换时,如果你对tensor进行了一些处理,比如归一化、标准化或者其他一些变换,那么你可能需要在转换回PIL图片之前对tensor进行相应的逆变换,以确保图片的数据显示正确。原创 2024-05-18 21:23:19 · 225 阅读 · 0 评论 -
【查看tensor的数据类型】
这段代码中,tensor.dtype将会输出tensor的数据类型。例如,如果你创建的是一个默认类型的tensor(即torch.FloatTensor),那么默认情况下它会打印出torch.float32。在Python中,你可以使用torch.Tensor对象的dtype属性来查看tensor的数据类型。dtype属性会返回一个torch.dtype对象,该对象描述了tensor中元素的数据类型。请注意,转换数据类型可能会导致数值精度的丢失,因此在进行类型转换时需要谨慎处理。原创 2024-05-18 21:22:05 · 279 阅读 · 0 评论 -
【神经网络输出10通道的tensor形状为(10, 512, 512),找出10通道中的最大值的通道序号,生成一个形状为(1, 512, 512)的张量,根据张量的序号存成索引图映射不同的颜色】】
要根据10通道中的最大值的通道序号生成一个索引图,并且将不同的通道序号映射到不同的颜色,你可以使用Python的图像处理库Pillow。首先,我们需要找出每个位置的最大值通道序号,然后使用这个序号来创建一个索引图,并映射不同的颜色。查看索引图与数值一致:max_channel_indices_np。创建一个颜色映射字典,用于将通道序号映射到不同的颜色。使用Pillow库创建一个索引图,并应用颜色映射。使用torch.max函数找到最大值及其索引。用PS软件打开可以看到它是索引图但是有上色。原创 2024-05-18 18:19:02 · 177 阅读 · 0 评论 -
深度学习中的各类评价指标
F分数是统计学中用来衡量二分类模型精确度的一种指标,它同时兼顾了分类模型的精确率和召回率。F分数可以看作是模型精确率和召回率的一种加权平均,其最大值是1,最小值是0。计算公式为Precision = TP / (TP + FN),其中TP表示真正例(True Positives),FN表示假负例(False Negtives)。计算公式为Precision = TP / (TP + FP),其中TP表示真正例(True Positives),FP表示假正例(False Positives)。原创 2023-12-06 11:45:00 · 1010 阅读 · 0 评论 -
【三维重建-PatchMatchNet学习笔记】
(2)从Depths_raw文件夹中读取深度可视化png图(宽160x高128)参考图ref和所有src(共6张彩色图),从Depths_raw文件夹中读取深度pfm图(宽160x高128)参考图ref和所有src(共6张彩色图),这两个图的ID跟参考图ID一样从0-48,故不需要加1。基于学习的方法比传统的方法有优势,但是受限于内存和运行时间,于是将补丁匹配的想法引入到端到端可训练的深度学习中,用可学习的自适应模块增强了补丁匹配的传统传播和代价评估步骤,减少了内存消耗和运行时间。1、图片的尺寸变大了;原创 2023-10-24 22:42:00 · 1115 阅读 · 0 评论 -
【多任务案例:猫狗脸部定位与分类】
)return pil_img, label[:4],label[4] # 图片像素(3, 224, 224),定位4个值,分类1个值。原创 2023-09-27 22:11:52 · 788 阅读 · 0 评论 -
【DenseNet模型】
图2 一个有三个Dense Block的DenseNet网络。两个相邻块之间的层称为过渡层,通过卷积和池化来改变特征图的大小。DenseNet通过密集连接,可以缓解梯度消失问题,加强特征传播,鼓励特征复用,极大减少了参数量。DenseNet的密集连接方式需要特征图大小保持一致。原创 2023-09-26 21:30:56 · 142 阅读 · 0 评论 -
【卷积神经网络:Inception模型】
Inception模型的组成主要由不同卷积核大小的卷积层拼接而成,其中一种带维度缩减的Inception模型可以减少参数量,引入更多非线性,提高泛化能力,其。(1)先定义一个基础卷积块,用于输入不同的卷积核大小。(2)设置不同的卷积层并合并。原创 2023-09-26 16:28:36 · 1100 阅读 · 0 评论 -
【残差网络ResNet:残差块输入输出形状控制】
为了与两层卷积组成前向传播的形状一致,一层卷积和批归一化用来控制输出的形状,最终相加形成新的与前向传播一致的形状。这是一个基本的残差块,由。原创 2023-09-26 15:45:11 · 147 阅读 · 0 评论 -
【模型微调】
(2)分类器训练完毕后,解冻卷积层,继续训练。卷积层毕竟是通用的参数并不针对当前问题,所以解冻后继续训练,针对当前问题的特征提取将更加准确。冻结的卷积层,训练分类器,分类器训练好后将冻结的卷积层解冻,允许卷积层的参数计算梯度并优化。(1)冻结预训练模型的卷积层,训练分类器,原创 2023-09-22 21:29:23 · 95 阅读 · 0 评论 -
【数据增强】
当数据比较小,难以获取新的训练数据时,可以考虑数据增强,如随机裁剪部分,随机左右上下翻转、随机旋转一个角度、随机亮度变化等微小变化,数据的多样性提高,数据集本身大小未变,只是做了微小调整送入网络。数据增强数据有限的情况下,可以增加样本的多样性、抑制过拟合,提高正确率。原创 2023-09-22 21:13:05 · 301 阅读 · 0 评论 -
【迁移学习】
迁移学习的思路是利用预训练模型的卷积部分(卷积基)提取数据集的图片特征,然后重新练最后的全连接部分(分类器),迁移学习的特征提取部分(卷积基)不能发生变化。(2)根据问题重新设置分类器,如需要分2类,则out_features=2。冻结卷积基的参数,避免模型参数被破坏,准确率下降。(3)用自己的数据训练设置好的分类器,(1)冻结预训练模型的卷积基。原创 2023-09-22 20:49:04 · 193 阅读 · 0 评论 -
【加载数据--自定义自己的Dataset类】
加载数据。原创 2023-09-22 19:36:28 · 393 阅读 · 0 评论 -
【模型保存与加载、保存最优参数、保存和恢复检查点checkpoint】
【代码】【模型保存与加载、保存最优参数、保存和恢复检查点checkpoint】原创 2023-09-22 18:08:09 · 998 阅读 · 0 评论 -
【使用ImageFolder加载数据】
如果是其它分类问题,也可以按照这种方法加载数据。诸如图片的两分类问题,训练和测试的图片是。原创 2023-09-22 17:43:30 · 279 阅读 · 0 评论 -
神经网络训练防止过拟合和欠拟合的方法
过拟合的本质是模型对训练样本过度学习,反而失去泛化能力,当发现过拟合时,一般说明模型的拟合能力没问题,但是泛化能力需要提高。如果模型训练时,准确率或者损失变化缓慢,则需要调整学习率,越小的学习率,模型的准确率或者损失变化越慢。1.减少神经元个数,如采用Dropout,随机丢弃一些神经元。2.让每一层变得更大,增加每一层的通道数或者神经元个数。3.隐藏层单元数,神经元个数或者卷积层通道数。5.增加训练样本,提高模型泛化能力。1.增加模型深度,添加更多层。原创 2023-09-19 10:47:48 · 312 阅读 · 0 评论 -
多层全连接网络:实现手写数字识别50轮准确率92.1%
输出:2 torchvision内置了常用数据集和最常见的模型输出:3 数据批量加载输出:4 绘制样例7 设置是否使用GPU输出:8 设置损失函数和优化器9 定义训练函数10 定义测试函数11 开始训练输出:12 绘制损失曲线并保存输出:输出:原创 2023-09-13 21:24:24 · 134 阅读 · 0 评论 -
卷积网络:实现手写数字是识别50轮准确率97.3%
输出:2 torchvision内置了常用数据集和最常见的模型输出:3 数据批量加载输出:4 绘制样例7 设置是否使用GPU输出:8 设置损失函数和优化器9 定义训练函数10 定义测试函数11 开始训练输出:12 绘制损失曲线并保存输出:输出:原创 2023-09-13 21:46:36 · 182 阅读 · 0 评论 -
【从构建神经网络模型到训练的基本要素】
cuda:01875 313首先定义自身参数self.XXX,再调用自身参数来定义前向传播过程(输入--->输出)。class LeNet(nn . Module) : '''这是一个使用PyTorch编写的LeNet模型的初始化函数。LeNet是一种经典的卷积神经网络, 由Yann LeCun等人在1998年提出。它包含了两个卷积层和三个全连接层, 用于对图像进行分类。该模型的初始化函数包含了模型中需要使用的各种网络层的定义。原创 2023-04-09 11:21:02 · 93 阅读 · 0 评论 -
【搭建神经网络模型的组成步骤】
还有如模型加载、重训练、演示等。如:2、导入数据集和参数设置如:3、定义网络模型如:4、展示网络结构并测试模型如:输出如下:5、模型训练与保存输出如下:6、绘制训练曲线原创 2023-04-09 10:31:05 · 1520 阅读 · 0 评论 -
【卷积神经网络--卷积/池化后特征图大小计算公式】
空洞卷积(atrous convolutions)又名扩张卷积(dilated convolutions),向卷积层引入了一个称为“ 扩张率(dilation rate)”的新参数,该参数定义了卷积核处理数据时各值的间隔。当groups=1的时候,假设此时 输入的通道数为n,输出的通道数为m,那么理解为把输入的通道分成1组(不分组),每一个输出通道需要在所有的输入通道上做卷积,也就是一种参数共享的局部全连接。当网络层需要较大的感受野,但计算资源有限而无法提高卷积核数量或大小时,可以考虑空洞卷积。原创 2023-04-08 12:26:13 · 1915 阅读 · 0 评论