- 博客(67)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2023年CCF会议最新截稿时间(偏计算机视觉CV和机器学习ML)
CCF会议时间(实时更新)A类会议会议简称会议全称截稿时间会议时间官方网址CVPR2021IEEE Conference on Computer Vision and Pattern RecognitionENDENDhttp://cvpr2021.thecvf.com/IJCAI2021International Joint Conference on Artificial IntelligenceEND2021.08.21https://ijcai-2
2021-07-03 10:08:25
100402
26
原创 LeetCode 54. 螺旋矩阵
看到一个有意思的做法,记录一下:class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: res = [] while matrix: res.extend(matrix.pop(0)) # res += matrix.pop(0) 将当前矩阵的最上层进行存储在结果中,而且将原矩阵的最上层元素进行剥离。 matri.
2022-05-02 13:19:38
407
原创 ResNet与Densenet之间的关系以及区别
一、resnet和densenet的之间的关系以及区别,如参数量和训练速度。简单介绍下resnet以及densenetresnet的最大的贡献是缓解深层的神经网络训练中的梯度消失问题,主要是利用shortcut的技术可以加深网络的深度而没有退化。反向传播时,梯度可能会在距离输入近的地方中产生消失的现象,既然离输入近的神经网络层较难训练,则可以将它短接到更加靠近输出的地方。因为直接映射是难以学习的,而ReseNet学习的是残差,这是更容易学习的。shortcut的设计是将模块的输入和输出连接在一起,然
2022-04-30 20:36:55
5759
原创 pip指令相关操作
查看环境依赖的具体版本pip list将环境依赖导出至txt文件pip freeze > requirements.txt安装某个依赖包pip install xxx=x.x.x安装txt里面所有的依赖pip install -r requirements.txt
2022-01-24 19:16:17
395
原创 python随机生成0-n的不重复列表
直接附代码参考:# 下面生成的是0到(n-1)的随机列表,根据自己的需求改即可。### 方法一n = 10shuffle = random.sample(list(range(n)), n)print(shuffle) # [5, 4, 7, 9, 2, 3, 0, 8, 1, 6]### 方法二list = list(range(10))print(list) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]random.shuffle(list)print(l
2022-01-23 18:05:38
1853
原创 python各种结构的插入与弹出
python各种结构的插入与弹出1、list列表-栈插入用append()弹出用pop()2、set集合插入用add()弹出用pop()3、队列(1)from collections import deque插入用append(),appendleft()弹出用popleft(),pop()(2)from queue import Queue插入用put()弹出用get()...
2022-01-22 19:56:48
988
原创 multiprocessing.pool.RemoteTraceback:
发生multiprocessing.pool.RemoteTraceback:原因:可能只是路径错了,可以检查一下。
2022-01-13 14:56:50
2351
原创 pytorch常用的乘法运算以及相关的运算符(@、*)
这里总结一下pytorch常用的乘法运算以及相关的运算符(@、*)。总结放前面:torch.mm:用于两个矩阵(不包括向量)的乘法。如维度为(l,m)和(m,n)torch.bmm:用于带batch的三维向量的乘法。如维度为(b,l,m)和(b,m,n)torch.mul:用于两个同维度矩阵的逐像素点相乘(点乘)。如维度为(l,m)和(l,m)torch.mv:用于矩阵和向量之间的乘法(矩阵在前,向量在后)。如维度为(l,m)和(m),结果的维度为(l)。torch.matmul:用于两个张量(
2022-01-05 17:23:29
7271
7
原创 RuntimeError: Boolean value of Tensor with more than one value is ambiguous
RuntimeError: Boolean value of Tensor with more than one value is ambiguous其中文意思大致是该张量含有多个(1个以上不含1个)boolean值,是不明确的,即无法比较。这里先举一个报错的例子:features = torch.zeros(8, 32)if features[1] == torch.zeros(32): # if 语句里面的条件无法判断 print('true')看一下if条件的实际结果是print(f
2021-12-31 14:39:00
88642
1
原创 记录mmdetectionv1与mmdetectionv2的不同
记录mmdetectionv11.0.rc0+3c2e4df与mmdetectionv22.11.0的不同之处。这两个版本的不同还有另外一个影响因素比较大的就是mmcv版本差异也很大。如:v1版本对应的是mmcv0.2.14,v2版本对应的mmcv1.3.3。1、配置文件的不同rpn_head的不同 rpn_head=dict( type='RPNHead', in_channels=256, feat_channels=256,
2021-12-30 14:29:40
2272
原创 RuntimeError: expected scalar type Long but found Float
ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index) RuntimeError: expected scalar type Long but found Float将label转化为torch.LongTensor即可。label = label.type(torch.LongTensor)
2021-12-24 15:43:12
1600
原创 mmdetection bug集锦
1、register_module() missing 1 required positional argument: 'cls'原因:mmdetectionv1和mmdetectionv2版本在注册backbone等的时候有差别的地方如括号。v1是@BACKBONES.register_module,而v2是@BACKBONES.register_module()
2021-12-20 17:51:38
700
原创 np.where用法以及常见的用法示例
np.where常用的用法示例,从一维数组以及二维数组进行举例:一、一维数组的np.where用法import numpy as nparr = np.arange(6) print(arr) # [0 1 2 3 4 5]print(np.where(arr > 3)) # (array([4, 5], dtype=int64),) 代表大于3数值的posprint(np.where(arr > 3, 1, -1)) # [-1 -1 -1 -1 1 1]arr = n
2021-12-20 15:55:44
1215
原创 Linux使用vim编辑文本
1、新建文件touch new.txt2、使用vi文书编辑器vi new.txt3、相关操作指令点击i键,切换到输入模式(即编辑模式)。接着,对文本进行相关编辑操作。...点击Esc键,切换到一般模式。最后,输入以下指令,保存并离开。:wq:w将编辑的数据写入硬盘档案中(常用):w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!:q离开 vi (常用)附:主要有以下三个模式:命令模式:用
2021-12-10 16:18:27
5861
原创 解决mmdetection训练过程loss为nan的问题
我之前遇到两次loss为nan,一次是由于数据标注出现问题,换不同的模型参数均出现此问题,因此需要仔细检查数据格式;另外一次是换了个neck的结构,loss变为nan,后面通过将学习率调为原来的1/10(根据实际情况调整),就没有出现了。下面为官方文档给出的解决方案,应该可以解决大部分问题。检查数据的标注是否正常, 长或宽为 0 的框可能会导致回归 loss 变为 nan,一些小尺寸(宽度或高度小于 1)的框在数据增强(例如,instaboost)后也会导致此问题。 因此,可以检查标注并过滤掉那些特别
2021-12-08 19:04:25
5749
3
原创 torch.topk与torch.sort用法
torch.topk用法torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)沿给定dim维度返回输入张量input中 k 个最大值。 如果不指定dim,则默认为input的最后一维。 如果为largest为 False ,则返回最小的 k 个值。返回一个元组 (values,indices),其中indices是原始输入张量input中测元素下标。 如果设定布尔值s
2021-12-07 16:03:22
1515
原创 内置函数sort与sorted的区别
list.sort():改变list内部的顺序sorted(list):不改变list内部的顺序>>> a = [2,1,4]>>> sorted(a)[1, 2, 4]>>> a[2, 1, 4]>>> a.sort()>>> a[1, 2, 4]
2021-12-06 09:04:56
401
原创 python中的链表理解
链表概念:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。相关代码# 首先定义结点类,链表结点包括值域 val,和 next 指针class ListNode: def __init__(self, x): self.val = x self.next = Nonedef main(): """ 利用数组初始化一个链表 """ nums = [1, 4, 2, 7..
2021-11-25 20:12:04
3929
原创 python读写json的简单示例
读写json的简单示例这里以将字典写入json文件为例:import jsonmy_dict = {} # 换成自己的dictjson_str = json.dumps(my_dict, indent=4)with open('./my_dict.json', 'w') as json_file: json_file.write(json_str) # 写入with open('./my_dict.json', 'r', encoding='utf-8') as f: my
2021-11-25 17:01:29
537
原创 python中的队列理解【collection中deque源码解析】
队列概念:一种 先进先出的数据结构,元素从后端入队,然后从前端出队。因此,标准的队列基本操作有 push to back(从右边入队)、peek/pop from front(从左边出队)、size 和 is empty 这些操作,遵循了上述概念的原则。而python中collections自带的deque,是一个双端队列。即两边均可操作。理解时,可以按数组的顺序来理解,即0为前端(首),-1为后端(尾)。附下源码:class deque(object): """ deque([i
2021-11-21 19:32:02
1359
原创 python利用字典统计词频的两种方式
python利用字典统计词频的两种方式1、自带collections库>>> import collections>>> s = 'collection'>>> collections.Counter(s)Counter({'c': 2, 'o': 2, 'l': 2, 'e': 1, 't': 1, 'i': 1, 'n': 1})>>> dict(collections.Counter(s)){'c': 2, 'o':
2021-11-20 13:30:35
4020
原创 python字符串的基本操作
字符串相关基础操作1、切片>>> str = '0123456789'>>> str[0:3] # 从0开始计数,左闭右开'012'>>> str[:] # 没有具体数值:默认从0开始,默认到终点'0123456789'>>> str[::-1] # 反转'9876543210' >>> str[4::] # str[4:]'456789'>>> str[::
2021-11-17 12:12:08
790
原创 利用python绘制混淆矩阵
利用python绘制混淆矩阵,直接附代码。from sklearn.metrics import confusion_matriximport pandas as pdimport matplotlib.pyplot as plty_pred = []y_true = []# 对上面进行赋值C=confusion_matrix(y_true, y_pred, labels=['0','1','2','3','4'])plt.matshow(C, cmap=plt.cm.Reds) #
2021-11-13 20:38:19
55861
35
原创 RuntimeError: CUDA error: device-side assert triggered
这个问题往往是加载图像分类的标签有误。我的是标签差了1,因为往往从0开始,有时不需要减1忘记修改了。
2021-11-05 15:36:46
378
原创 RuntimeError: ./xxx.pth is a zip archive (did you mean to use torch.jit.load()?)
简单来说,pytorch版本不对应,用新版本pytorch保存的模型,用旧版本的pytorch去加载。
2021-11-03 22:46:55
4814
原创 collections.OrderedDict object has no attribute eval
pytorch==1.6.0(或更高的)的框架下保存模型时,不建议使用torch.save(model.state_dict(),model_path) # 该语句只保存了模型的权重参数未保存整个模型model.eval()会报错collections.OrderedDict' object has no attribute 'eval'正确语句:torch.save(model,'save_path') #保存时torch.load('save_path/model') #加载时因此
2021-10-29 13:07:54
1813
原创 移除预训练网络的全连接层
有时,我们需要利用预训练网络权重提取全连接前的特征。需要将全连接去除掉,然后后面根据自己的任务进行修改。self.feature_extraction = models.resnet34(pretrained=True) self.feature_extraction.fc = nn.Sequential() # remove fc或者,在设计网络层面,将对应的fc去除掉,然后按对应键对进行加载即可。...
2021-10-29 11:49:36
1254
原创 手动加载特定的预训练模型权重(或解决size mismatch for fc.bias的问题)
有时无法直接利用官方的预训练模型,需要自己手动将指定模型进行预训练。主要有以下语句作为参考:model = models.resnet34(pretrained=False)state_dict = torch.load('./pretrain/resnet34-333f7ec4.pth')pretrained_dict = {k: v for k, v in state_dict.items() if k in model.state_dict()}model.load_state_dict(pr
2021-10-29 10:10:07
3156
原创 命令行中利用python的pdb库调试
在没有利用pycharm等软件时,利用命令行编程调试时就可以使用pdb库。主要有两种方式进入调试方式。1、直接将断点在程序指定行设置好这种方式需要修改原先的py文件。然后运行py文件,会自动运行跳转指定的地方开始调试。import pdbpdb.set_trace() # 需要断点调试的地方2、命令行直接进行调试状态(推荐)这种方式不需要修改py文件,直接进行调试状态,默认从头开始。然后利用之后的一些命令进行调试即可。运行以下指令即可。python -m pdb main.py3、相关
2021-10-28 17:00:34
177
原创 conda虚拟环境的相关操作(快速安装pytorch虚拟环境)
1、创建虚拟环境conda create -n your_env_name python=3.8 其中,your_env_name:虚拟环境的名字,是自定义的。2、激活虚拟环境conda activate your_env_name 或Linux以及windows系统下Linux: source activate your_env_nameWindows: activate your_env_name3、结束虚拟环境Linux: source deactivateWindows
2021-10-18 17:26:31
347
原创 TypeError: an integer is required (got type is tuple)
TypeError: an integer is required (got type is tuple ),这个错误。从字面意思理解,需要获取一个整型数据,而原代码是元组。需要做的就是,定位到错误的具体那行,将元组改为整型就行。我这边的是img_tr = [transforms.RandomResizedCrop((int(args.image_size), int(args.image_size)), (args.min_scale, args.max_scale))]将 (int(args.i
2021-10-18 15:46:04
7929
原创 ipython在命令行的使用
ipython在命令行的使用,相较于直接输入python并使用更加方便。例如有时会自动跳转到合适的位置。输入以下指令并回车:ipython操作的示例:Python 3.7.3 (default, Mar 27 2019, 22:11:17)Type 'copyright', 'credits' or 'license' for more informationIPython 7.4.0 -- An enhanced Interactive Python. Type '?' for help.
2021-10-16 16:47:57
728
原创 Linux利用命令从网页下载文件(wget)
利用wget命令即可从网页下载,下面的例子是将网页上的该文件下载到当前路径下wget https://download.pytorch.org/models/resnet18-5c106cde.pth对下载的文件进行重命名,例如命名为resnet18.pthwget -O resnet18.pth https://download.pytorch.org/models/resnet18-5c106cde.pth...
2021-10-16 15:48:36
12650
原创 中英文颜色RGB数值对照表(python cv2)
图像处理经常需要涉及画不同颜色的框、线;需要理解对应的颜色名字(包括中英文的)。注意:python的cv2读取图像是BGR格式,即与下面表格最后一列的数值相反,如LightPink浅粉红色为(193,182,255);blue纯蓝色为(255,0,0)。需要看具体颜色的样式可以打开链接查看。英文颜色中文颜色HEX格式RGB格式LightPink浅粉红#FFB6C1255,182,193Pink粉红#FFC0CB255,192,203Crimson猩红#
2021-09-25 15:39:40
9461
原创 python读取加载并保存pkl文件
示例:import _pickle as cPicklef = open('./valid.pkl', 'rb+')info = cPickle.load(f)print(info)附上open的相关参数:模式描述t文本模式 (默认)。x写模式,新建一个文件,如果该文件已存在则会报错。b二进制模式。+打开一个文件进行更新(可读可写)。U通用换行模式(不推荐)。r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
2021-09-25 14:10:46
6794
原创 python的二进制与位运算
了解python的二进制与位运算,主要由以下几个方面展开:一、bin()函数将十进制转为二进制,输出的是字符串格式。>>> bin(11)'0b1011'其他八进制oct()、十六进制hex()。二、format以上的内置函数输出时前两位的字符代表进制。如果不需要输出前两位的,可以用以下的方式。>>> '{:b}'.format(11)'1011'>>> type('{:b}'.format(11))<class 'str'
2021-09-19 15:15:16
6205
原创 Linux复制文件操作(cp,scp命令)
cp指令将文件夹1里的所有东西拷贝在文件夹2下面cp -r 需要拷贝的文件夹路径dir1 拷贝的目的地dir2效果:dir2路径下有dir1对应的文件夹-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。-f:覆盖已经存在的目标文件而不给出提示。-i:与 -f 选项相反,在覆盖目标文件
2021-09-18 17:43:39
1182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人