![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度学习
文章平均质量分 62
微凉的衣柜
人工智能专业博士,专注前沿AI技术,分享优质代码资源、科技新闻与行业趋势。
展开
-
2025秋招书籍推荐:《深度学习的数学理论》——揭示深度学习背后的数学逻辑
近年来,随着深度学习在图像识别、自然语言处理等领域的突破性进展,越来越多的研究者和开发者投入到这个领域。然而,尽管深度学习在实践中取得了显著的成功,其背后的理论机制仍然让很多人感到迷惑。这就是为什么我今天想向大家推荐一本书——《深度学习的数学理论》(*Mathematical Theory of Deep Learning*),由Philipp Petersen和Jakob Zech两位学者撰写,它深入探讨了深度学习的数学原理,帮助读者理解为什么神经网络能够如此有效地解决复杂问题。原创 2024-08-20 15:29:37 · 685 阅读 · 0 评论 -
梯度累积与显存占用:深入解析
在深度学习模型的训练过程中,梯度累积(Gradient Accumulation)是一种常用的技术,特别是在显存有限的情况下,能够有效增加批次大小,同时不超出显存限制。然而,对于梯度累积对显存的影响,很多开发者仍有疑问:梯度累积会不会增加显存的占用?尤其当累积步数增大时,显存占用是否会急剧增加?原创 2024-08-19 10:57:45 · 626 阅读 · 0 评论 -
深入解析H100、A100和4090三款显卡的性能对比与应用场景
H100、A100和4090三款显卡的性能对比与应用场景原创 2024-06-24 13:07:50 · 9423 阅读 · 2 评论 -
mask2former利用不确定性采样点选择提高模型性能
mask2former代码讲解原创 2024-06-12 20:46:35 · 869 阅读 · 0 评论 -
一文彻底弄懂 PyTorch 的 `F.grid_sample`
通过上面的示例计算,我们可以看到如何将归一化坐标转换为输入张量的实际坐标,以及如何使用双线性插值计算采样点的值。具体示例展示了从输入张量和处采样的详细过程。通过双线性插值在输入张量中进行采样,即使坐标是小数,也能准确地计算出相应位置的值。这对于需要高精度变换和采样的任务非常有用。通过这种方法,我们可以实现高精度的图像处理和分析。原创 2024-06-11 20:06:28 · 2340 阅读 · 0 评论 -
Detectron2中的ImageList.from_tensors详解
Detectron2中的ImageList.from_tensors原创 2024-05-30 19:45:56 · 485 阅读 · 0 评论 -
Transformer的PyTorch实现之若干问题探讨(二)
Transformer的decoder mask机制详解原创 2024-02-09 15:00:47 · 1651 阅读 · 3 评论 -
Transformer的PyTorch实现之若干问题探讨(一)
Transformer结构详解原创 2024-02-04 20:37:21 · 1537 阅读 · 0 评论 -
CVPR 2023 Hybrid Tutorial: All Things ViTs之DINO attention map
DINO attention map可视化原创 2024-01-20 22:30:39 · 1070 阅读 · 0 评论 -
CVPR 2023 Hybrid Tutorial: All Things ViTs之mean attention distance (MAD)
ViT中的MAD原创 2024-01-20 21:36:23 · 967 阅读 · 4 评论 -
CVPR 2023 Hybrid Tutorial: All Things ViTs之CLIP注意力机制可视化
CVPR 2023 Hybrid Tutorial: All Things ViTs之CLIP注意力机制可视化原创 2024-01-20 13:30:07 · 2592 阅读 · 3 评论 -
3090微调多模态模型Qwen-VL踩坑
3090Qwen-VL微调原创 2023-12-02 15:31:31 · 2613 阅读 · 21 评论 -
终极解决Hugging Face 模型推理 HTTPSConnectionPool(host=‘huggingface.co‘, port=443): Max retries...
疑难杂症:Hugging Face网络请求报错问题终极解决方法.原创 2023-05-30 00:30:39 · 13542 阅读 · 3 评论 -
nn.dropout 导致报错 one of the variables needed for gradient computation has been modified...
RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation报错解决方法原创 2023-04-22 00:48:12 · 167 阅读 · 1 评论 -
importlib.import_module找不到文件解决方法
importlib.import_module路径报错原创 2023-03-27 15:03:56 · 2593 阅读 · 0 评论 -
resnet加载预训练权重相关代码
resnet模型实现及加载预训练权重。原创 2023-03-26 23:35:30 · 1165 阅读 · 1 评论 -
TorchSemiSeg项目调试
TorchSemiSeg项目调试原创 2022-11-04 20:59:53 · 263 阅读 · 0 评论 -
numpy.reshape, numpy.transpose的理解
矩阵维度变换理解原创 2022-06-22 20:08:25 · 525 阅读 · 0 评论 -
语义分割任务多分类Focal loss与Dice loss pytorch实现
Focal loss与Dice loss pytorch实现原创 2022-06-01 19:56:24 · 5238 阅读 · 12 评论 -
矩阵维度扩充的理解
矩阵扩充理解与实例讲解原创 2022-01-27 16:47:38 · 3902 阅读 · 0 评论 -
torch.view打乱tensor顺序使得交叉熵计算出错
pytorch中,torch.view操作不好会打乱tensor的次序,导致计算结果偏差。训练时梯度不下降的原因。print(input)print(input.shap原创 2022-01-20 22:57:37 · 2147 阅读 · 0 评论 -
DANet代码复现
论文:Dual Attention Network for Scene Segmentation项目: https://github.com/junfu1115/DANet/1.Evaluation项目的readme中谈到了利用训练好的模型进行inference,对cityscapes数据集如果不熟悉,可能会不知所措。此处针对其说明做一些补充。Download the Cityscapes dataset and convert the dataset to 19 categories.Ple原创 2021-10-16 12:52:51 · 2749 阅读 · 15 评论 -
torch.cuda.empty_cache()导致RuntimeError: CUDA error: out of memory.
用双卡训练时,当GPU0接近跑满时,在GPU1中如果有torch.cuda.empty_cache()会导致:torch._C._cuda_emptyCache()RuntimeError: CUDA error: out of memory.出现这个问题是当使用GPU1训练时,torch.cuda.empty_cache()默认是给GPU0释放显存,而此时GPU0接近跑满,且无显存可释放,直接使用这句话就会导致显存溢出。解决方法为: with torch.cuda.device('c原创 2021-09-27 21:46:23 · 4422 阅读 · 3 评论 -
VS2017 +CUDA11.0配置CUDA应用程序,成功编译但结果不正确解决方案
本人参考《基于GPU加速的计算机视觉编程》配置好CUDA 11.0的vs2017开发环境,创建了项目,并编译以下代码:#include <iostream>#include <cuda.h>#include <cuda_runtime.h>#include <stdio.h>//Definition of kernel function to add two variables__global__ void gpuAdd(int d_a, int原创 2021-09-08 11:32:32 · 3272 阅读 · 3 评论 -
Pytorch Point 3d安装踩坑记录
Pytorch Point 3d 貌似是个不错的三维深度学习的库,但是安装的过程发现bug特别多,弄了很久才弄好,此处把一些踩坑记录给大家分享。首先进入官方github:https://github.com/nicolas-chaulet/torch-points3d ,按照其提供的命令:pip install torchpip install torch-points3dpytorch需要按照官方指定的版本安装好,输入pip install torch-points3d往往会报各种错误(如果没有原创 2021-08-24 19:48:46 · 1957 阅读 · 1 评论 -
PyTorch 多GPU使用torch.nn.DataParallel训练参数不一致问题
在多GPU训练时,遇到了下述的错误:1. Expected tensor for argument #1 'input' to have the same device as tensor for argument #2 'weight'; but device 0 does not equal 1 2. RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:1原创 2021-08-18 21:32:35 · 4578 阅读 · 1 评论 -
torch_points_kernels遭遇 ModuleNotFoundError: No module named ‘torch_points_kernels.points_cpu‘
在调试RandLA-Net pytorch版本的代码时,按照要求安装了torch-points-kernels库,在运行model.py时,在导入库的语句提示错误:import torchimport torch.nn as nntry: from torch_points import knn #from torch_points_kernels import knnexcept (ModuleNotFoundError, ImportError): from torch原创 2021-08-11 22:05:02 · 3614 阅读 · 30 评论 -
torch.distributions.utils.probs_to_logits解释
复现论文时发现torch.distributions.utils.probs_to_logits函数,发现相关文档不太充足,翻到源码中看了一下,把该函数的功能记录一下。首先给个简答示例:import torchprob = torch.tensor([0.1160, -0.9430, 0.1184, -0.0717])logits = torch.distributions.utils.probs_to_logits(prob, is_binary=False)print(logits)结原创 2021-08-10 15:09:37 · 698 阅读 · 2 评论 -
Numcpp按行索引赋值
如果希望实现类似Numpy以下功能:import numpy as npa = np.array([[1,2],[3,4],[5,6]])b = np.zeros([3, 2])b[2, :] = a[1,:]则在Numcpp实现代码如下:#include "NumCpp.hpp"#include <cstdlib>#include <iostream>int main (){ nc::NdArray<float> a = { {1, 2}原创 2021-06-15 17:31:34 · 432 阅读 · 0 评论 -
从Numpy导出array,从Numcpp导入
采用Numpy可以导出.npy的array文件,但是没有办法从Numcpp导入.npy文件。因此如果要实现导入导出,可以采用两种方法。一种是从Numpy导出.txt的array文件,这个文件会比较大;另一种是用Numpy导出.bin文件,bin文件体积较小,这种方法会损失array的维度,导入时需要修改array维度。详细代码如下:1.导出.txtNumpy:pred_np = pred.long().cpu().numpy()np.savetxt('pred_np.txt', pred_np)//原创 2021-06-10 13:53:11 · 950 阅读 · 0 评论 -
Libtorch中tensor读写方法对比
Libtorch中许多API与Pytorch中十分类似,但是在C++环境下tensor数据处理的效率问题十分有必要引起重视。本人在开发对数据处理实时性要求比较苛刻的系统中遇到一些关于tensor的创建与读取的问题,此处做一个总结,供大家共同参考讨论。1.tensor数据初始化(1)一维tensor创建使用Liborch库最初始的需求则是创建tensor。如果对于元素比较多的tensor,推荐使用torch::from_blob的方法从数组中创建元素。如果直接给tensor赋值,则耗时特别长。以下给出一原创 2021-05-28 21:47:05 · 5849 阅读 · 10 评论 -
libtorch cuda推理时间测量
当训练好的模型集成到libtorch上之后,测算模型的推理时间不能简单的通测算普通CPU上运行程序时间的方法一致。主要需要解决一个GPU热身问题和cuda CPU同步问题。关于在Pytorch上测算模型推理素的代码和原理参见The Correct Way to Measure Inference Time of Deep Neural Networks。本文的代码也是参考该文章提供的代码,不过是在libtorch上运行。直接给出libtorch上测量模型推理时间的代码:#include <torc原创 2021-05-19 00:29:03 · 1778 阅读 · 1 评论 -
libtorch1.8.1,cuda10.2+vs2017+Qt5.9.9安装配置
windows下Qt+vs+libtorch配置,以及libtorch在vs中常见报错总结。原创 2021-05-17 23:16:31 · 2991 阅读 · 0 评论 -
torch.utils.data.WeightedRandomSampler样本不均衡情况下带权重随机采样
关于WeightedRandomSampler的用法csdn上有一些很棒的博客。本文参考博客Pytorch样本比例不均衡时采用WeightedRandomSampler进行采样的代码对WeightedRandomSampler做进一步的分析。首先从对官网给出的注释做进一步解释:torch.utils.data.WeightedRandomSampler(weights, num_samples, replacement=True, generator=None)Parameters:weights原创 2021-05-07 20:47:55 · 4029 阅读 · 4 评论 -
python嵌套list容易犯错
对比以下两段代码:list_test=[0]list_c = []for i in range(5): list_test[0] = i list_c.append(list_test)print(list_c)#[[4], [4], [4], [4], [4]]list_c = []for i in range(5): list_test=[0] list_test[0] = i list_c.append(list_test)print(list_原创 2021-04-20 23:00:30 · 100 阅读 · 0 评论 -
votenet网络运行时pointnet++编译出错的解决方案
源码是:https://github.com/facebookresearch/votenet参考解决方案:https://github.com/facebookresearch/votenet/issues/108votenet的网络跑起来真的是头大,数据集的准备就异常复杂繁琐,网路跑起来也更是麻烦。在代码的readme中提到要预先编译pointnet++:cd pointnet2python setup.py install编译时可能会提示AT_CHECK错误,按照之前参考解决方案给出的方法原创 2021-04-20 16:01:34 · 1271 阅读 · 5 评论 -
pointnet中采用tensor进行点云批量归一化(pytorch)
pointnet在训练点云前会将点云进行归一化,这个归一化是在dataloader中进行,且采用numpy进行处理,源码如下:def pc_normalize(pc): l = pc.shape[0] centroid = np.mean(pc, axis=0)#求这个batch点云的均值 pc = pc - centroid m = np.max(np.sqrt(np.sum(pc**2, axis=1)))#求这个batch点云的模的最大值 pc = pc /原创 2021-03-30 20:20:53 · 2589 阅读 · 1 评论