![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
#学习记录
文章平均质量分 75
来包番茄沙司
我是一条偶尔躺平的咸鱼
天津大学 研二
展开
-
解决pytorch训练时的显存占用递增的问题
在pytorch训练过程中突然out of memory。解决方法:1. 设置 torch.no_grad():2. loss.item()3. 在代码中添加以下两行:torch.backends.cudnn.enabled = Truetorch.backends.cudnn.benchmark = True4. del操作后再加上torch.cuda.empty_cache()补充:Pytorch显存不断增长问题的解决思路原创 2023-01-15 09:08:30 · 6341 阅读 · 0 评论 -
关于win10“你未连接到任何网络“解决方法
第一步:点击此电脑右键 —> 管理 —> 设备管理 —> 网络适配器第二步:把电脑关机,拔掉所有外接设备,包括充电器、鼠标键盘等,不要开机。第三步:按住开机键不松手,40s以上,操作完之后,再点开机。【按开机键时自动开机也没事,按够40s以上即可】第四步:再重启电脑如果经过以上四步还不可以,则继续第五步:在网络状态中点击网络重置,然后等五分钟,让电脑自动重启。原创 2022-12-06 09:43:40 · 10843 阅读 · 9 评论 -
程序报错之torch、torch-geometric、torch_sparse等版本依赖问题
重新安装torch、torch-geometric库1 查询cuda版本,下载对应的torch库2 先下载对应版本的torch_scatter、torch_sparse等3 安装.whl文件4 安装 geometirc原创 2022-10-05 18:16:45 · 6884 阅读 · 0 评论 -
自监督Self-supervied 学习笔记
自监督学习的思想很简单,设计一个辅助训练目标,然后利用大量无标注的数据本身的结构或者特性【标签不需要人工标注】,训练网络使得网络具备特征提取的能力。在网络具备特征提取能力后,通过少量的有标注的数据对网络进行微调,使得网络具有分类的能力。总之,自监督的监督信号来源于数据本身的内容,也就是自己给自己监督信号(self的含义)。也可以认为是实例级别的标注,每个样本是一个类。原创 2022-09-26 21:16:27 · 1535 阅读 · 0 评论 -
Python中__init__.py文件的作用学习笔记
`__init__.py`文件的一个主要作用是将文件夹变为一个Python模块,Python中的每个模块的包中,都有`__init__.py` 文件。python在解释包的时候会给本模块下的所有文件建立一个索引放在当前路径下的`__init__.py`文件中,如果没有文件索引,即使import了指定的包,解释器还是找不到这个模块下的文件。如果一个文件夹下没有`__init__.py`文件,不会被当做一个模块。原创 2022-09-22 08:30:58 · 4031 阅读 · 0 评论 -
Pytorch中DataLoader的collate_fn()参数学习笔记
使用pytorch训练网络之前的数据准备部分都要有两个流程:Dataset和DataLoader。继承Dataset类,自定义数据处理类。必须重载实现len()、getitem()这两个方法。其中__len__返回数据集样本的数量,而__getitem__应该编写支持数据集索引的函数,返回数据和对应label,例如:通过dataset[i]可以得到数据集中的第i+1个数据。DataLoader中的collate_fn函数将这些一条一条的数据组织成一个batch。原创 2022-09-21 18:04:40 · 1853 阅读 · 0 评论 -
Pyg消息传递源码(MESSAGE PASSING)+实例
MessagePassing基类GNN关键的步骤就是消息传递、聚合、更新。**pytorch geometric**提供了一个MessagePassing基类,它已经通过MessagePassing.propagate()实现了以上三步对应的计算过程。我们只需定义一个继承了MessagePassing基类的class,然后根据具体的图算法来更新函数 **message()** 的邻域聚合方式aggr="add", aggr="mean" or aggr="max",以及函数**update()**,原创 2022-09-20 11:20:29 · 1472 阅读 · 0 评论 -
设定并理解随机数种子 && Pytorch在Dataloader类中设置shuffle的随机数种子方式
1 PyTorch设置随机数的种子为了保证模型和数据生成的可再现性,需要设定随机种子。只要知道随机性来自哪里,设置对应的随机种子即可。比如使用了numpy.random,则应设置numpy.random.seed(seed)。2. python调试技巧之设定随机数种子3.Pytorch在dataloader类中设置shuffle的随机数种子方式设置随机种子的作用就是让你的每一次训练都乱的一样,即可以让你在单次训练内部数据保持乱序但不同训练之间都是一样的乱序。原创 2022-09-20 10:14:07 · 6443 阅读 · 1 评论 -
python PyQt5(自定义)信号与槽详解与实例
所谓PyQt5高级自定义信号与槽,指的就是我们可以以自己喜欢的方式定义信号与槽函数,并传递参数,自定义信号的一般流程如下- 定义信号- 定义槽函数- 连接信号与槽函数- 发射信号原创 2022-09-19 11:35:36 · 5529 阅读 · 0 评论 -
PyG自定义数据集学习笔记(持续更新
PyG 提供了torch_geometric.data.Data用于构建图。除了使用benchmark数据集进行实验外,还可以自定义数据集,其方式与Pytorch类似,需要继承数据集类。PyG中提供了两个数据集抽象类:torch_geometric.data.InMemoryDataset:用于构建内存数据集(小数据集),继承自Dataset,一次性加载所有数据到内存。torch_geometric.data.Dataset:用于构建大型数据集(非内存数据集),分次加载到内存;原创 2022-09-18 15:45:28 · 5229 阅读 · 9 评论 -
python保存float类型的小数的位数的三种方法
python保存float类型的小数的位数的三种方法原创 2022-09-09 15:17:05 · 4036 阅读 · 0 评论 -
使用PyQt5开发一个扫雷小游戏(代码可以直接运行)
使用PyQt5开发一个扫雷小游戏(代码可以直接运行)原创 2022-09-08 12:00:38 · 847 阅读 · 1 评论 -
Weisfeiler-Lehman(WL)算法和WL Test的学习笔记
1. 什么是Weisfeiler-Lehman(WL)算法2. WL Test3. Weisfeiler-Lehman算法与GCN的关系4. Weisfeiler-Lehman算法应用Weisfeiler-Lehman算法通常被用在解决图的相似性问题上5. 举例说明①聚合邻居节点的标签得到一个标签的字符串,对字符串进行升序排列。②对字符串进行哈希处理,这里生成了一个一一映射的字典,这一步也可以使用其它的字符串哈希函数,只要保证**碰撞率**尽量小就可以。③将哈希过的值重新赋值给相应的节点...原创 2022-08-31 17:52:48 · 2785 阅读 · 0 评论 -
使用A*算法实现三维迷宫并进行可视化
使用A*算法实现三维迷宫并进行可视化# 定义一个含有障碍物的100×100的栅格地图# 10表示可通行点# 0表示障碍物# 7表示起点# 5表示终点原创 2022-08-10 21:35:53 · 374 阅读 · 0 评论 -
python输出多维数组最大值、最小值和指定值的全部索引值index
查询最小值索引的常规操作是:np.argmin(data)这里的4代表:将数组降成一维后最小值的索引,即[5,2,3,2,1,2,1,4,6,6,5,1]的第一个1的索引。局限性:①我们需要的索引是二维或者多维的,4不是我们想要的,我们需要的是(2,1)②当存在多个最大值时,argmax只会返回第一个最大值的索引,不能返回全部的索引值③只能返回最大最小值的索引,如果我们相返回指定值6的对应的索引呢?...原创 2022-07-27 12:26:47 · 5321 阅读 · 0 评论 -
自动机器学习库:TPOT の 学习笔记
Tree-based Pipeline Optimization Tool(TPOT,基于树的管道优化工具)是一个用于在 Python 中执行 AutoML 的开源库。TPOT 使用基于树的结构来表示预测建模问题的模型管道,包括数据准备和建模算法以及模型超参数。它利用流行的 Scikit-Learn 机器学习库进行数据转换和机器学习算法,并使用遗传编程随机全局搜索过程**来有效地发现给定数据集的性能最佳的模型管道。...原创 2022-07-18 07:55:21 · 1834 阅读 · 1 评论 -
使用gym搭建自定义(以二维迷宫为例)环境并实现强化学习 python
文章目录1. 查看所有环境Gym是一个包含各种各样强化学习仿真环境的大集合,并且封装成通用的接口暴露给用户。2. 编写文件放置首先找到自己的环境下面的gym环境包envs,之后我们要创建自己的myenv.py文件,确保自己创建的环境可以在gym里使用,可以进入classic_control文件新建一个myenv的文件夹。3.注册自己的模拟器4. 自定义环境实现5. 测试环境6. 自定义环境以及测试代码解释7. gym模块中环境的常用函数gym的初始化gym的各个参数的获取刷新环境..原创 2022-07-12 14:51:53 · 7018 阅读 · 3 评论 -
图嵌入Graph embedding学习笔记
将图的节点或边映射到一个低维的向量空间,即**将海量、高维、异构、复杂和动态的数据表示为统一、低维、稠密的向量**,用以保存图的结构和性质,旨在实现节点分类与聚类、链接预测、图的重构和可视化 等,提供一种具有更低计算复杂度的方法。包括**节点、边、子图、全图**基于**手工构造特征、矩阵分解、随机游走、图神经网络**的图嵌入方法。1.DeepWalk采用随机游走形成序列,采用skip-gram方法生成节点embedding。2.node2vec采用不同的随机游走策略形成序列,类似skip-gram原创 2022-07-04 17:41:01 · 2129 阅读 · 0 评论 -
《人工智能-机器学习》数据预处理和机器学习算法(以企鹅penguins数据集为例)
加载给定或者自行选定的数据集,首先对数据进行查看和理解,对样本数量、各特征数据类型、分布、特征和标签所表达的含义等进行解释,然后对其进行必要的数据预处理工作,接下来选用数种不同的机器学习算法(不少于三种),在对原理进行简介之后,将其应用到数据集上来完成回归、分类或者聚类操作,最后对算法进行评估和分析。.........原创 2022-07-02 16:09:48 · 5859 阅读 · 2 评论 -
【PyG】文档总结以及项目经验(持续更新
PyG(PyTorch Geometric)是一个基于PyTorch的图神经网络框架,包含图神经网络训练中的**数据集处理、多GPU训练、多个经典的图神经网络模型、多个常用的图神经网络训练数据集而且支持自建数据集**,主要包含以下几个模块 - torch_geometric:主模块 - torch_geometric.nn:搭建图神经网络层 - torch_geometric.data:图结构数据的表示 - torch_geometric.loader:加载数据集 - torch_geometr原创 2022-06-28 16:53:55 · 1784 阅读 · 1 评论 -
Python 编程规范和软件开发目录规范的重要性
Python 编程规范和软件开发目录规范的重要性 编程规范的重要性、注释、Python 中的特殊注释、规范命名变量:、变量定义规则:、变量规范命名注意事项:、总体命名规则:、排版问题、代码排版:、文档排版:、空格的使用:、其他、 软件开发目录规范的重要性、 为什么要设计好目录结构?、 目录组织方式、 README项目说明文件、为什么要写README文件?、完整的README包含的内容、一个简单的范本、规范的README文件怎么写?、 关于requirementstxt和setuppy、setup.py、r原创 2022-06-23 14:25:26 · 478 阅读 · 0 评论 -
获取列表中最大最小值的前n个数值的位置索引的四种方法
第一种方法:heapq内置函数 + map基本思想:使用heapq内置函数 + map 建立前n个最大值和最小值的映射。第二种方法:建立副本+遍历第三种方法:字典形式第四种方法:遍历原创 2022-06-09 17:23:21 · 424 阅读 · 0 评论 -
NetWorkX使用方法及 nx.draw()相关参数
文档阅读笔记 NetWorkX 使用方法及 nx.draw()相关参数。Python+NetworkX画图的nx.draw_networkx(函数详解)networkx在02年5月产生,是用python语言编写的软件包,便于用户对复杂网络进行创建、操作和学习。利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。......原创 2022-06-07 15:51:14 · 10893 阅读 · 1 评论 -
中国工科研究生200多篇英文论文中最常见的习惯(The Most Common Habits from more than 200 English Papers written by Gradua)
本文介绍了中国作家从两百多篇英文科技论文中观察到的一些最常见的汉英习惯。习惯被解释,在大多数情况下,示例文本从实际论文连同首选文本给出。本文试图解释如何纠正和防止这类错误。在某些情况下,还可能解释为什么会产生这种习惯。这篇文章可以作为编辑技术论文的个人指南,特别是当母语为英语的编辑不在时。...原创 2022-05-28 11:37:13 · 3242 阅读 · 2 评论 -
决策树&随机森林&GBDT&XGBoost学习笔记以及代码实现
XGBoost是GBDT的优秀版本,是一种基于决策树的集成机器学习算法,使用梯度上升框架,适用于分类和回归问题。XGBoost的整体结构与GBDT一致,都是在训练出一棵树的基础上,再训练下一棵树,预测它与真实分布间的差距,通过不断训练用来弥补差距的树,最终使用树的组合实现对称式分布。原创 2022-05-18 23:54:01 · 2122 阅读 · 0 评论 -
梯度提升回归(Gradient boosting regression,GBR) 学习笔记以及代码实现&permutation_importance(PI)
梯度提升回归(Gradient boosting regression,GBR)是一种从它的错误中进行学习的技术。它本质上就是集思广益,集成一堆较差的学习算法进行学习。有两点需要注意:①每个学习算法准确率都不高。但是它们集成起来可以获得很好的准确率。②这些学习算法依次应用。也就是说每个学习算法都是在前一个学习算法的错误中学习原创 2022-05-14 22:46:01 · 15239 阅读 · 1 评论 -
tsne原理以及代码实现(学习笔记)
t-SNE(t-distributed stochastic neighbor embedding) 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,并进行可视化。对于不相似的点,用一个较小的距离会产生较大的梯度来让这些点排斥开来。这种排斥又不会无限大(梯度中分母),避免不相似的点距离太远。t-SNE在低维空间采用重尾分布,以缓解SNE的拥挤问题和优化问题。原创 2022-05-09 03:58:36 · 18637 阅读 · 13 评论 -
深入理解网络结构设计中的add操作和concatenate操作
深入理解网络结构设计中的add操作和concatenate操作两者都可以理解为整合特征图信息,但concat理解起来更加直观。当两路输入可以具有**对应通道的特征图语义类似的性质**的时候,可以用add来替代concat,这样更节省参数和计算量(concat是add的2倍),如图像分类。原创 2022-04-26 11:11:06 · 2526 阅读 · 1 评论 -
影响神经网络训练速度的因素&使得神经网络训练速度加快的方法
一、影响网络训练速度的因素 1.使用的处理器(GPU和CPU) 2.batchsize大小 3.模型的大小和权重参数 4.内存访问成本(训练过程中的中间结果) 5.网络的结构也会影响神经网络的速度 二、加速神经网络训练的方法 1. 合理的超参数设计 BatchSize epoch和学习率策略 2. 权值共享 3. 升级相关软件包 4. 多卡训练、数据并行 5. 混合精度训练 6.减少不必要的网络连接和RELU层原创 2022-04-13 09:59:27 · 11190 阅读 · 3 评论 -
np.random.seed()随机数种子学习笔记
①随机数种子相当于给我们一个初值,之后按照固定顺序生成随机数(该随机数种子对应的list);如果使用相同的seed( )值,则每次生成的随机数列表都相同;②如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。③设置seed()的时,可以调用多次random()向该随机数的列表中添加信息;而再次使用设置的seed()值时,仅一次有效,也就是说调用第二次random()时则脱离该随机数的列表。④seed方法设立的目的是为了能够实现实验的可重复进行,得到相同的随机值结果。原创 2022-04-11 10:22:02 · 3507 阅读 · 0 评论 -
项目代码中参数的管理:mmcv中的Config包&argparse导入参数
当我们项目的超参数很多时,在文中设定和修改并不方便,这时我们需要项目中所有参数放入一个文件夹中,方便管理和修改。我们常常可以把argparse的使用简化成下面四个步骤:①导入模块②创建一个解释器对象parser=argparse.ArgumentParser()③parser.add_argument()向该对象中添加你要关注的命令行参数和选项④parser.parse_args()调用parse_args()方法进行解析,解析成功之后即可使用。原创 2022-04-10 15:25:33 · 1646 阅读 · 0 评论 -
Logging学习笔记&Logging与print区别与联系
总的来说 logging 模块相比 print 的优点:①可以在 logging 模块中设置日志等级,在不同的版本(如开发环境、生产环境)上通过设置不同的输出等级来记录对应的日志,非常灵活。②print 的输出信息都会输出到标准输出流中,而 logging 模块就更加灵活,可以设置输出到任意位置,如写入文件、写入远程服务器等。③logging 模块具有灵活的配置和格式化功能,如配置输出当前模块信息、运行时间等,相比 print 的字符串格式化更加方便易用。原创 2022-04-09 20:35:02 · 3011 阅读 · 0 评论 -
使用python读取和保存为excel、csv、txt文件以及对DataFrame文件的基本操作
使用python读取和保存为excel、csv、txt文件以及对DataFrame文件的基本操作 读取excel文件并将其内容转化为矩阵形式。对DataFrame文件的基本操作包括DataFrame的创建(dict进行创建,也可以读取csv或者txt文件)、DataFrame轴的概念和DataFrame一些性质(索引、切片;修改数据;算数运算;函数应用和映射;排序和排名;汇总和计算描述统计;处理缺失数据Dataframe中的Series是什么?......原创 2022-04-08 12:51:56 · 32408 阅读 · 1 评论 -
python爬取疫情数据并存入excel中(包括国内各省份,全球,国内外历史疫情数据)
python爬取疫情数据并存入excel中(包括国内各省份,全球,国内外历史疫情数据)代码可以直接运行1.进入获取疫情的url 例如: 腾讯新闻的疫情网站 网易新闻2.为了避免反爬,伪装成浏览器:找到headers3.分析url,找到数据存放的规律4.进行数据读取和存储原创 2022-04-05 09:15:02 · 17968 阅读 · 29 评论 -
主动学习(Active Learning,AL)的理解以及代码流程讲解
针对有监督的学习任务,存在标记成本较为昂贵且标记难以大量获取的问题。 在此问题背景下,主动学习(Active Learning, AL)尝试通过选择性的标记较少数据而训练出表现较好的模型。主动学习的工作流程的关键是选择模型、使用的不确定性度量以及应用于请求标签的查询策略。主要步骤为:收集数据、建立模型、使用查询策略来选取未标注的样本进行标注、重新训练模型直到满足精度为止。主动学习编写代码的流程是:导入相应的包、数据集准备以及初始数据集的选取、定义主动学习器ActiveLeaner、进行主动学习原创 2022-03-28 13:19:37 · 10756 阅读 · 10 评论 -
RNN&LSTM&Transformer&CNN
对于图片分类,输入的每张图往往都是独立的,前后无关,这时CNN就够了。但是对于很多语言类的问题,输入的语境和语序都是很重要的此时要用到RNN,RNN考虑了时序的变化,让神经网络有了某种记忆的能力。即普通RNN无法回忆起久远记忆的原因:梯度消失或者梯度爆炸,所以提出了LSTM,实质是:过滤重要特征 忽略无关信息可以形象地理解为LSTM加了一个日记本。多出了三个控制器:输入、输出、忘记在Transformer中,编码器&解码器架构表现得最好。transformer的优点是对大数据适配能力强原创 2022-03-22 15:41:47 · 3695 阅读 · 1 评论 -
batchsize太小的缺点&随着batchsize逐渐增大的优缺点&如何平衡batchsize的大小
简单点说,就是我们一次要将多少个数据扔进模型去训练,这个值介于1和训练样本总个数之间。若batchsize太小的缺点:耗时长,训练效率低;训练数据就会非常难收敛,从而导致欠拟合。随着batchsize逐渐增大的优缺点:大的batchsize减少训练时间的同时所需内存容量增加;大的batchsize在提高稳定性的同时可能导致模型泛化能力下降。平衡batchsize的大小:一般在Batchsize增加的同时,我们需要对epoch增加;batchsize增大到某个时候,达到时间上的最优。...原创 2022-03-21 19:21:33 · 29135 阅读 · 0 评论 -
pytorch中的.detach()和detach_()和.data和.cpu()和.item()的深入详解与区别联系
pytorch中的.detach()和detach_()和.data和.cpu()和.item()的深入详解与区别联系在x->y->z传播中,如果我们对y进行detach(),梯度还是能正常传播的;但如果我们对y进行detach_(),就把x->y->z切成两部分:x和y->z,x则无法接受到后面传过来的梯度。x.data和x.detach()返回和x的相同数据 tensor,这个新的tensor和原来的tensor(即x).data返回的是一个tensor、而.item()返回的是一个具体的数值。原创 2022-03-16 22:39:21 · 5601 阅读 · 0 评论 -
全卷积神经网络(FCN)和卷积神经网络(CNN)的主要区别
卷积神经网络主要由卷积层、池化层和全连接层组成。排在前面的较浅的卷积层采用较小的感知域,可以学到图像的一些局部特征(如纹理特征),排在后面较深的卷积层采用较大的感知域,可以学到更加抽象的特征(如物体的大小、位置和方向等)。全卷积神经网络(FCN)和卷积神经网络(CNN)的主要区别在于FCN将CNN末尾的全连接层转化成了卷积层。例如,经过卷积、池化后,图像的大小变为4(长)×4(宽)×512(通道数)。CNN将图像送入全连接层,而FCN将图像送入1×1的卷积层。原创 2022-03-14 16:40:50 · 10936 阅读 · 0 评论 -
关于代理模型的一些理解
为什么要使用代理模型?在实际问题中,优化问题的解空间一般规模较大且复杂,导致求解过程也非常复杂。优化问题逐渐向复杂的高维、非线性、多极值的昂贵优化问题发展,这类问题的计算时间成本十分昂贵。构建代理模型以下三步:(1)选择适当的实验设计方法用于获取构建代理模型的初始样本点(2)选择合适的一个或多个代理模型用于近似表达数据(3)运用所构建的一个或多个代理模型原创 2022-03-14 15:28:46 · 21355 阅读 · 0 评论