pytorch
文章平均质量分 68
just do it now
to do or not to do --> just do it
展开
-
RuntimeError: CUDA error: device-side assert triggered
原因模型的数据处理出了问题,一般是类似于数组访问越界的问题1.例如分类的标签是数据处理的时候是1-10,但是torch在计算交叉熵是默认是0-92.embedding模块的词表长度问题,比如embedding中词表总长度是100,但是具体数据的token_id超过100,也会报错。3.其他越界问题错误定位torch在使用cuda计算是报错的位置的代码不一定是错的,所以这点一定要注意(推测cuda并行计算,不能清楚的定位到具体错误位置)这时候要注意一点,把所有数据,模型不要放在cuda上计转载 2022-05-16 16:33:25 · 423 阅读 · 0 评论 -
torch. gather 函数介绍
官方介绍如下:链接功能就是从原tensor中获取指定dim和指定index的数据。直接例子说明:import torcht= torch.arange(0, 16).view(4, 4)print(tensor)输出:tensor([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]])输入行向量index,并替换行索引(dim=0)..原创 2022-04-13 16:15:45 · 705 阅读 · 0 评论 -
pytorch分布式训练之 TypeError: function takes exactly 5 arguments(1 given)
在使用pytorch进行分布式训练时老是原创 2022-04-13 14:47:45 · 4480 阅读 · 3 评论 -
pack_padded_sequence 和 pad_packed_sequence
首先需要申明的是,本文中所使用到的 PyTorch 版本为:1.4.0 。当采用 RNN 训练序列样本数据时,会面临序列样本数据长短不一的情况。比如做 NLP 任务、语音处理任务时,每个句子或语音序列的长度经常是不相同。难道要一个序列一个序列的喂给网络进行训练吗?这显然是行不通的。为了更高效的进行 batch 处理,就需要对样本序列进行填充,保证各个样本长度相同,在 PyTorch 里面使用函数 pad_sequence 对序列进行填充。填充之后的样本序列,虽然长度相同了,但是序列里面可能填充了很多转载 2022-03-16 20:00:37 · 1628 阅读 · 2 评论 -
pytorch如何查看显存利用情况
最近搞LSTM优化,但是显存利用率不稳定,想看一下LSTM的显存占用情况,搜罗了一通,发现一个不错的开源工具,记录分享一下。首先上项目地址:https://github.com/Oldpan/Pytorch-Memory-Utils这里也有作者写的博客:https://oldpan.me/archives/pytorch-gpu-memory-usage-track代码库就两个python文件modelsize_estimate.py和gpu_mem_track.py,需要先将这两个文件复制..原创 2022-03-15 11:44:40 · 12619 阅读 · 0 评论 -
Pytorch-> pack_padded_sequence()和pad_packed_sequence()
1. 为什么要用pack_padded_sequence在使用深度学习特别是RNN(LSTM/GRU)进行序列分析时,经常会遇到序列长度不一样的情况,此时就需要对同一个batch中的不同序列使用padding的方式进行序列长度对齐(可以都填充为batch中最长序列的长度,也可以设置一个统一的长度,对所有序列长截短填),方便将训练数据输入到LSTM模型进行训练,填充后一个batch的序列可以统一处理,加快速度。但是此时会有一个问题,LSTM会对序列中非填充部分和填充部分同等看待,这样会影响模型训练的精度原创 2021-09-10 15:05:36 · 746 阅读 · 0 评论 -
统一的NER识别模型-Unified NER
头尾token,头尾产生联系,表示出不连续实体的头尾关系,并且和。下一个相邻词/字,表示两个字之间的关系。原创 2022-03-08 16:27:30 · 1886 阅读 · 0 评论 -
PyTorch 保存与加载模型
本文详解了PyTorch 模型的保存与加载方法。目录1 需要掌握3个重要的函数2 state_dict2.1 state_dict 介绍2.2 保存和加载 state_dict (已经训练完,无需继续训练)2.3 保存和加载整个模型 (已经训练完,无需继续训练)2.4 保存和加载 state_dict (没有训练完,还会继续训练)2.5 把多个模型存进一个文件2.6 使用其他模型的参数暖启动自己的模型2.7 保存在 GPU, 加载到 CPU2.8 保存在 GPU, 加载到 GP原创 2022-01-14 14:54:41 · 1450 阅读 · 0 评论 -
torch 读取图像并进行卷积操作-torch.nn.Conv2d
import torchimport torch.nn as nnimport numpy as npimport cv2img = cv2.imread('a.png', 1).astype(np.uint8)img = cv2.resize(img, (380,380))img = img / 255.img = torch.from_numpy(img)img = torch.tensor(img, dtype=torch.float32)img = img.unsqueez.原创 2022-01-13 16:11:57 · 4846 阅读 · 0 评论 -
如何解决 RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`
本文方法限以下条件使用运行环境没有改变 之前代码可以正常运行 代码修改后再同样的环境下出现了这个问题如果满足以上三个条件,则一般不是CUDA出现了问题,则可以尝试用以下方法:将代码在cpu上运行,不用GPU,这时候再报错就回给出具体出现问题的代码位置,有针对性的进行修改就好了...原创 2022-01-13 12:31:54 · 17742 阅读 · 0 评论 -
PyTorch tensor操作-transpose permute view unsqueeze squeeze expand repeat
记录学习1. 改变shapetorch.reshape()、torch.view()可以调整Tensor的shape,返回一个新shape的Tensor,torch.view()是老版本的实现,torch.reshape()是最新的实现,两者在功能上是一样的。示例代码:import torcha = torch.rand(4, 1, 28, 28)print(a.shape)print(a.view(4 * 1, 28, 28).shape)print(a.reshape(4 .原创 2022-01-10 18:19:17 · 301 阅读 · 0 评论