pytorch
Icoding_F2014
相信代码可以变化世界
展开
-
pytorch 冻结部分参数
pytorch里面每个参数都有一个requires_grad属性,这个属性为True表示这个参数需要梯度下降优化。属性为False表示这个参数不需要优化。for param in model.parameters(): param.requires_grad = False原创 2021-12-11 14:14:30 · 2457 阅读 · 1 评论 -
Triplet Loss原理及实现
Triplet Loss的动机一个好的特征提取器,应该尽可能的做到同类别样本映射出来的特征会聚集在一起,而不同类别的样本映射出来的特征应该要相互远离。为了达到这个目标,Triplet Loss显式的在Loss里面要求:不同类别之间的距离至少要超过同类别之间距离的某个阈值。如果能够做到这一点,那么类内距和类间距之间差就有一个明显的鸿沟,那么也可以达到上面提到的目标。Triplet Loss的定义Triplet Loss里面包含若干三元组:锚点 anchor正例 positive负例 negat原创 2021-12-10 11:17:55 · 2991 阅读 · 0 评论 -
pytorch加载模型指定GPU卡号报错或者指定失败
根据pytorch的文档,在加载模型的时候,可以指定将模型的tensor加载到特定目标GPU上。加载方法有:>>> torch.load('tensors.pt')# 1. Load all tensors onto the GPU 0>>> torch.load('tensors.pt', map_location=torch.device('cuda:0'))# 2. Load all tensors onto GPU 1>>> torc原创 2021-11-22 17:36:31 · 2593 阅读 · 0 评论 -
pytorch性能瓶颈检查
看书的时候,看到pytorch居然自带了瓶颈检查的工具:torch.utils.bottleneck用法:python -m torch.utils.bottleneck 待测脚本路径示例效果:-------------------------------------------------------------------------------- Environment Summary--------------------------------------------------原创 2021-11-21 16:30:13 · 1761 阅读 · 0 评论 -
GraphConvolution的实现说明
GCN是特别常见的图神经网络模型,这个模型在各种图神经网络的开源库都有实现,例如DGL,PYG。但是开源库里面的实现,基本上是空域的图卷积操作,意思是说DGL和PYG里面的邻接矩阵 AAA 都必须是硬定义的。这里的良性定义是指:Aij∈{0,1}A_{ij}\in\{0,1\}Aij∈{0,1},每个元素非0即1,必须能够确定性的知道是否存在节点 iii 和节点 jjj直接的连边。如果我们想要跑soft 的邻接矩阵 Aij∈[0,1]A_{ij}\in[0,1]Aij∈[0,1],这个矩阵里面的元素是连原创 2021-04-22 17:51:49 · 2702 阅读 · 1 评论 -
torch.where函数用法
函数原型:torch.where(condition, x, y) → Tensor作用: 将两个tensor : x和y进行逐元素合并,condition ,x和y需要是相同形状的、或者可以广播为相同形状。假设合并后的结果为z,z的形状为x,y两者的形状或者他们广播后的形状。对于每个下标i,如果condition[i] 满足条件,那么z[i]等于x[i],否则z[i]等于y[i] 。举例:>>> x = torch.randn(3, 2)>>> y = to原创 2021-04-13 16:38:47 · 2055 阅读 · 0 评论 -
Pytorch-geometric 图神经网络库 教程 (一)
前言之前我是一直使用DGL这个图神经网络库做图神经网络方面的研究的,DGL也是一个特别漂亮的图神经网络开源库。但是DGL有如下两个缺点:DGL适合跑那种邻接矩阵是良性定义的graph。良性定义是指Aij∈{0,1}A_{ij}\in\{0,1\}Aij∈{0,1},邻居矩阵的每个元素不能是连续的。DGL的库更新的慢。此外,DGL主要是基于传统的图计算那套方法来实现的,里面有mailbox之类的,并不是用数学公式来直接表达。Pytorch-geometric则是可以解决如上的两个缺点。因此,原创 2021-04-05 21:01:00 · 3234 阅读 · 1 评论 -
Winodws/Linux 平台上 各个版本pytorch的pip安装
v1.8.0# RocM 4.0.1 (Linux only)pip install torch -f https://download.pytorch.org/whl/rocm4.0.1/torch_stable.htmlpip install ninjapip install 'git+https://github.com/pytorch/vision.git@v0.9.0'# CUDA 11.0pip install torch==1.8.0+cu111 torchvision==0.9原创 2021-04-01 10:01:03 · 923 阅读 · 0 评论 -
RuntimeError: cublas runtime error : resource allocation failed at THCGeneral.cpp:250
pytorch报错:RuntimeError: cublas runtime error : resource allocation failed at THCGeneral.cpp:250 #10排查方法:如果模型本身没有GPU存储不够的问题,那么考虑使用torch.nn.Embedding()除了问题。embedding_layer = th.nn.Embedding(num_embeddings=3, embedding_dim= self.embedding_dim)那么输入给embed原创 2021-03-29 22:01:24 · 686 阅读 · 0 评论 -
pytorch 载入历史模型时更换gpu卡号,map_location设置
pytorch 在保存训练后模型的时候,会把训练过程中使用的设备号(例如gpu卡号cuda:0 ,cpu)也一并保存下来。当pytorch重新载入历史模型时,模型默认根据训练时的设备卡号,把权值载入到相应的卡号上。然而,有的时候测试过程和训练过程的设备情况是不一致的。举个例子,A主机有四块GPU卡,然后我们用cuda:3 训练模型,并保存模型。在测试时候,我们需要在客户的B主机跑模型,但是B主机只有一块gpu卡:cuda:0 。如果按照默认方式载入模型的话,pytorch会报找不到gpu设备,或其他原创 2020-12-11 16:41:26 · 3230 阅读 · 0 评论 -
pytorch 踩坑集
错误1: 多LossRuntimeError: Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time.原因:一次feed,多次backward()了。方法:把各个LOSS加权求和起来,然后再backward().原来有问题的代码:原创 2020-11-13 19:27:15 · 388 阅读 · 0 评论