python(pytorch为主)
记录pytorch框架下的代码、技术问题
反科研pua所所长
且视他人之疑目如盏盏鬼火,大胆去走你的夜路。
展开
-
【代码学习】聚类方法及实现记录
聚类方法记录原创 2022-11-02 11:49:29 · 588 阅读 · 0 评论 -
windows上配置本地深度学习工作站
安装Anaconda、创建python环境、安装Jetbrains Toolbox、安装Pycharm、Professional/Community、安装cuda、安装cudnn、安装pytorch、配置环境变量、激活powershell的base环境原创 2022-10-23 11:26:32 · 2671 阅读 · 2 评论 -
python 2 环境创建及pip install + scipy bug解决
如题原创 2022-09-20 18:48:15 · 949 阅读 · 1 评论 -
【知识点合辑】numpy+torch+latex+jupyter notebook+python+Windows字典
字典式文章,只是为了方便查找原创 2022-08-08 10:30:51 · 1872 阅读 · 0 评论 -
【踩坑合辑】invalid device ordinal、python time 单位、IndexError: only integers, slices (`:`)
7.18踩的坑原创 2022-07-18 22:17:35 · 490 阅读 · 0 评论 -
【知识点合辑】轮廓系数、unicode转float、读取.csv文件跳过第一行
7.16的小知识点原创 2022-07-16 22:20:13 · 171 阅读 · 0 评论 -
【踩坑合辑】7.14
7.14踩的坑原创 2022-07-14 22:09:00 · 234 阅读 · 0 评论 -
【踩坑合辑】‘map‘ object is not subscriptable、key=lambda和在两台服务器之间传输文件
7.13踩的坑原创 2022-07-13 22:07:04 · 362 阅读 · 0 评论 -
【踩坑合辑】视频转化为帧、Pycharm 项目左侧目录文件背景变黄、no module named past
7.11踩坑合辑,具体坑如题原创 2022-07-11 21:43:39 · 307 阅读 · 0 评论 -
【知识点合辑】torch.unsqueeze()、torch.cat()和unexpected EOF
7.7遇到的小知识点或tip原创 2022-07-07 20:06:44 · 432 阅读 · 0 评论 -
【踩坑合辑】Attempting to deserialize object on CUDA device+buff/cache占用过高+pad_sequence
22.7.5遇到的坑原创 2022-07-05 21:48:11 · 485 阅读 · 0 评论 -
【代码学习】批量提取论文(pdf)的第一页
使用场景软件学报论文录用的收尾工作中,需要提交所有参考文献首页的电子版压缩包(以文献序号作为文件名),也就是说,我一篇综述论文90+篇文献,需要逐一找到这些文献的pdf原版(现存电脑中的已经被我批注过了),然后逐一提取出pdf的第一页,这两件事情中,第一件事情较为复杂(因为所需论文的发表期刊/会议需要与引用一致),而第二件更简单且更耗时,所以付诸于程序python批量提取pdf的第一页from PyPDF2 import PdfFileReader, PdfFileWriterimport os原创 2022-05-29 17:34:07 · 1962 阅读 · 2 评论 -
【踩坑合辑】pycharm远程连接服务器
动机使用windows自带的远程桌面连接连接远程服务器,使用起来太卡了,严重降低了我的写代码体验。于是尝试用pycharm远程连接服务器,这样就可以使用服务器上的环境和设备(GPU)了牺牲要在本地为项目预留空间,从而方便服务器和本地之间进行文件的上传与下载,这也导致项目内最好不要放太大的文件(比如数据集),否则上传和下载很耗时间要用远程的环境来运行jupyter的话,无法可视化变量,如下图:下载项目和配置环境最基本的远程连接服务器的需求,参考pycharm远程连接服务器完整教程,我就是完全原创 2022-05-08 23:19:43 · 1403 阅读 · 0 评论 -
python中使用f-string报错SyntaxError: invalid syntax
查了一下f-string的用法,这种写法是没有错的,所以并没有出现语法错误。其实是因为python版本的问题,只有python3.6才能使用f-string的这种写法,如果不是python3.6,建议将f-string转化为等价的.format()形式,如:generator.load({:s}".format(opt.output_path))...原创 2022-04-28 10:22:19 · 4596 阅读 · 0 评论 -
mask的用法
之前无数次遇见mask,这次总算搞懂了,简单总结下:控制损失中不同样本的分量假设损失是对N个样本的单独损失求和,而网络对某些样本的预测已经足够精确了,这时候就可以利用mask(我也不懂为什么要叫mask)控制损失计算时,不同样本的权重,让损失更关注结果差的样本masks = torch.zeros(len(index)).float().cuda() # 创建masksfor m in range(len(masks)): iou = get_iou(index[m], gt_index[m]原创 2022-03-30 16:46:58 · 3620 阅读 · 0 评论 -
使用torch.load加载模型时出现‘utf-8‘ codec can‘t decode byte问题
使用torch.load加载模型时出现'utf-8' codec can't decode byte问题官方文档https://pytorch.org/docs/stable/generated/torch.load.html原句:model.load(PATH, map_location=‘cpu’)改为:model.load(PATH, map_location=‘cpu’, encoding=‘latin1’)...原创 2021-01-19 10:42:29 · 2395 阅读 · 2 评论 -
pytorch保存训练日志
之前在别人的代码中看到训练日志的保存,也想用到自己的模型中,学习下后发现原理很简单,这里简要总结下:train_log_filename = "train_log.txt"train_log_filepath = os.path.join(result_dir, train_log_filename)设置要保存的训练日志对应的路径,其中result_dir是用来存储所有结果的文件夹,结果包括但不限于:模型参数、训练日志、测试精度等;train_log_txt_formatter = "{time_原创 2021-08-16 12:10:46 · 6581 阅读 · 0 评论 -
使用torch.nn.DataParallel进行多GPU的训练
由于模型的特殊性,已经尝试过在batch_size=10的情况下在一张24G的3090ti上跑,但仍然提示CUDA out of memory,因此只能求助于使用多卡进行训练…torch.nn.DataParallel()的原理如下:首先把模型加载到一个主设备把模型只读复制到多个设备把大的batch数据也等分到不同的设备最后将所有设备计算得到的梯度合并更新主设备上的模型参数清楚这个原理后,只需要完成两步即可:将模型加载到主设备并复制到多个设备 model = torch.n原创 2021-08-17 20:30:21 · 1422 阅读 · 0 评论 -
torch.utils.data.DataLoader中collate_fn函数的使用
研究了两天,终于把相关代码跑通了,简单来说就是对于一般的dataset(这里的一般指的是比较常见的cv任务,但具体我也不是特别了解),在使用torch.utils.data.DataLoader时这个参数无需指定,pytorch会直接调用default_collate(),但是我的任务中,一个batch中的向量,在很多个维度上都不统一,所以需要自己写一个collate_fn()函数,使得同一个batch内的向量保持维度一致,才能够开展并行计算。具体以我的代码为例:def my_collate_fn(ba原创 2021-08-12 21:29:18 · 1183 阅读 · 1 评论 -
显存充足,但提示CUDA out of memory
详细错误如下:RuntimeError: CUDA out of memory. Tried to allocate 32.00 MiB (GPU 1; 23.70 GiB total capacity; 21.69 GiB already allocated; 26.81 MiB free; 22.00 GiB reserved in total by PyTorch)认真阅读这个错误后,就去查看了GPU 1,发现显存充足:但是这里的显存充足,可能并不是真的充足,我每次查看显存时,都是在程序崩掉原创 2021-08-12 20:55:49 · 6822 阅读 · 5 评论 -
github项目Video-Dataset-Loading-Pytorch的魔改与妙用
科研又进入心态爆炸的倦怠期,准备来写写博客找找感觉…由于自己的模型需要以视频的帧为处理单位,而不是直接加载处理好的帧视觉表示,因此在github上找到一个基于pytorch的视频数据集项目:https://github.com/RaivoKoot/Video-Dataset-Loading-Pytorch后来慢慢发现,其中有些地方没办法完全满足我模型的需求,于是魔改了一下,这里简要记录先梳理一下这个项目的大致逻辑,可以按照官网介绍的,进行demo演示,这里就不多赘述了;我们需要用到的地方只有两个:v原创 2021-08-16 14:51:34 · 479 阅读 · 0 评论 -
科研小tip(二)
今日花了好久解决了一个非常无语的任务:之前在jupyter notebook上测试argparse时,出现了一个错误,具体是啥记不得了,但是记得修改方法是将parsed_args = parser.parse_args()改为parsed_args = parser.parse_args(args=[])改完之后就能正常运行了,于是就没继续深究,但今天使用pycharm时,想要测试parser.add_argument的位置参数,于是写了如下语句:parser.add_argument("f原创 2021-08-23 16:04:34 · 115 阅读 · 0 评论 -
pytorch保存和加载模型
之前想学习保存和加载模型的代码,在知乎上看到一个回答,发现两行代码就可以搞定,于是兴冲冲的加上了:torch.save(model, "model.pth.tar") model_dict=torch.load("model.pth.tar")然后就大胆的去训练了,结果训练结束,准备load时,发现load得到的结果,就只有模型的结构,参数完全没保存下来…(哎,当时看到答主说这种方式是保存了整个网络,就以为整个网络必然包括参数啊,谁知道仅仅是结构)于是换了一种方式:checkpoint = {原创 2021-08-25 21:01:58 · 690 阅读 · 0 评论 -
科研小tip(三)
今天跑测试代码时遇到的一个问题:model.load_state_dict(checkpoint["model_param"])首先加载训练模型及其参数,然后建立一个新的模型,再用上面这行代码加载模型的参数,但是出现以下报错:RuntimeError: Error(s) in loading state_dict for xxx及很大一长串报错细节。查找官网关于torch.nn.Module.load_state_dict(state_dict, strict=True)函数的相关说明后,发.原创 2021-08-26 15:44:06 · 115 阅读 · 0 评论 -
pytorch中提升训练速度的方法
半精度训练原创 2022-02-10 21:29:51 · 565 阅读 · 0 评论 -
【动手炼丹】(一)
李沐大神《动手学深度学习》课堂笔记(3.20)原创 2022-02-15 11:14:26 · 405 阅读 · 0 评论 -
科研小tip(一)
今天打算开一个小专题,叫做科研小tip,在科研的过程中,有时一整天会学到各种各样的小tip,虽不成体系但很有用,因此总结下来,加深印象。将文件夹打包成tar.gz格式,使用命令:tar zcvf FileName.tar.gz DirName利用conda环境自动生成requirements.txt文件,使用命令:pip freeze > requirements.txt但这行命令生成的requirements.txt文件,会出现@file的字样,如下图:这代表生成的requ原创 2021-08-20 20:38:06 · 162 阅读 · 0 评论 -
科研小tip(四)——AssertionError: Torch not compiled with CUDA enabled
今天刚刚解决一个非常恼人的bug,以至于如果不来总结一下这个奇怪的bug,就会异常懊悔失去的2h…遇到的bug:AssertionError: Torch not compiled with CUDA enabled咨询了百度,一般的回答是说,这种错误是因为你的cuda不能用,解决方法是把代码放到cpu上跑。但是这很奇怪,你的代码中都写了.cuda了,大概率就是你想用cuda而且具备这种硬件条件,所以这个解决方案比较没有用。最后在jupyter里面输入了print(torch.__version_原创 2021-10-30 17:21:12 · 544 阅读 · 0 评论 -
关于深度模型训练的一点疑问
今日又打算开个专栏,叫做待解答,有些问题去百度上问都很难描述出来,而且不属于会卡住你工作的bug类,所以决定记录下来加深印象,可能就会在某天等来那个珍贵的茅塞顿开…同样的模型,设置batch_size=2,放在两个相同配置的显卡,device#1和device#6上跑,并将device#1设置为主设备,但是跑的过程中发现,在device#6上占用的内存比device#1上大许多(我的模型大概是大了三倍,最初device#1 5000+M,device#616000+M),且最后也是因为device#6上的原创 2021-08-26 21:11:30 · 97 阅读 · 0 评论 -
github项目上传过程踩坑总结
由于实验室提供的服务器资源实在是不够用,于是考虑暂时性的租用服务器,找到了一个适合学生的服务器租用网站(便宜),其推荐上传代码的方式就是通过github,于是我开启了第一次github项目上传之旅…首先是一些傻瓜操作(我将不使用命令的,通过图形界面完成的操作称为傻瓜操作):在github首页点击左边的New按钮,根据自己的需求新建一个repository建好之后,利用git clone命令将这个repository下载到需要的位置进入下载好的文件夹内部,将需要上传的文件拷贝到这里最后使用以下的原创 2021-08-20 14:40:56 · 277 阅读 · 0 评论 -
带有action=“store_true“的参数到底什么意思?
可以简单理解为,这是为参数指定一个动作(在cmd中声明它),当发生这个动作的时候,就将这个参数存储为’_'后的值;当不发生这个动作的时候,就将其存储为默认值;若是没有指定默认值,若是store_true,默认值就是false,若是store_false,默认值就是true...原创 2022-02-28 16:54:22 · 1314 阅读 · 0 评论 -
【知识建设】线性插值——代码导向
目标client端生成预测的方式,考虑将网络的输入(start, end)先转化为该点对应的prob,然后通过线性插值的方法,将N个样本扩充为server端聚合的标准维度线性插值因为要实现的维度看起来无法直接掉包(torch.nn.functional.interpolate),这里找到一个博主的python实现,进行注释与理解import matplotlib.pyplot as plt"""@brief: 计算n阶差商 f[x0, x1, x2 ... xn]@param: xi原创 2022-03-25 16:24:30 · 903 阅读 · 0 评论 -
pycharm中的红色小闪电
在使用pycharm进行debug的时候,有时候还没到自己打的断点(红色小圆圈)就在其他地方停住了,这里还会出现红色小闪电,那是系统自动打上的断点,表示你的程序还没运行到你设置的断点,在这里就出错了...原创 2022-03-01 10:15:46 · 7685 阅读 · 0 评论 -
yaml格式文件
是什么简单来说就是一种类似json格式的文件,里面装着一些结构化的键值对,如下图:不同于json的是,这里的结构是用空格(而非tab)来指示的,每一个子层加两个空格。生成与修改直接在pycharm中打开就可以了使用场景用在config参数的生成等,在程序中引入时:import yamlyaml.load('yaml文件地址', Loader=yaml.FullLoader)...原创 2022-03-01 10:25:13 · 1615 阅读 · 0 评论 -
cuda_device的血泪教训
之前声明cuda设备的方式都是首先os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2,3,4,5,6,7', 代表能看到所有设备,然后再通过device = 'cuda:6'+model = model.to(device), 放到其中某个设备上。今天要跑一个新模型,仍然选择这种方式,但是非常神奇,我生命了'cuda:6',但是模型偏偏就是会跑到'cuda:0'和'cuda:6'上于是换了种方式,os.environ['CUDA_VISIBLE_DEVICES'] =原创 2022-03-03 14:42:02 · 3134 阅读 · 0 评论 -
【知识建设】面向应用的高斯核密度估计——scipy.stats.gaussian_kde
scipy.stats.gaussian_kde 一个用于高斯核密度估计的python类,使用的前提是import scipy高斯核密度估计使用非参数估计的方式估计一个随机变量的概率密度函数,在深度学习中,我们获得的数据集基本是以离散形式出现的,如果想用这些离散值获得其概率密度函数,就可以使用高斯核密度估计来达到参数dataset:array_like,需要评估的数据点,对于单变量数据是一个一维数组,否则就是一个带维度的二维数组bw_methodweights(后两个参数暂时还没用到,先不整理原创 2022-03-17 22:05:45 · 3739 阅读 · 0 评论