代码笔记
sanananana
这个作者很懒,什么都没留下…
展开
-
PyG中自定义Data的注意事项(__cat_dim__)
__cat_dim__() takes 3 positional arguments but 4 were given原创 2022-06-20 16:19:43 · 933 阅读 · 3 评论 -
python 保存和读取中间变量
三种方法: pickle, joblib, pd.read_pickle很简单,知道包之后就可以搜,教程很多,此处不再赘述。需要说明的是,根据类型的不同,使用不同的包会报错,目前遇到的有:1) 使用pandas包保存,用joblib读,报错2) 使用joblib保存,用pandas读,报错还是建议统统只使用一种方法...原创 2022-05-04 20:32:01 · 1125 阅读 · 0 评论 -
[bug][未解决] transformer encoder对不同的输入,输出全部一样
多标签分类问题,输入是蛋白质特征,输出是蛋白质的功能(即,一个由标签组成的DAG)motivation:输入是一个有multi-hot向量组成的张量,multi-hot的每一位代表着某一种特征。考虑到不同特征之间可能存在交互作用,进而影响到最后的结果,首先用一个权重矩阵将输入嵌入之后,使用transformer的encoder进行特征的提取(特征之间没有先后关系,因而没有加入位置信息)。然后问题出现了:不管输入是什么,输出的结果都是一样的,或者十分接近。将transformer改成mlp,效原创 2022-04-29 17:02:27 · 1665 阅读 · 9 评论 -
[pytorch] list类型的batch转tensor,cat与stack的区别
有一个list,其中的元素为一个tensor,list的长度即为batch_size:a = torch.randn(2, 3)b = torch.randn(2, 3)c = torch.randn(2, 3)l = [a, b ,c]需要将其转换为一个大的tensor作为模型的输入,三种方法1) 使用stack,注意stack和后续的cat一样,返回一个心得tensor,不修改原来的torch.stack(l, 0)Out[8]: tensor([[[ 0.2798, -0原创 2022-04-17 14:31:06 · 2248 阅读 · 0 评论 -
[BUG] 模型输出有空值
日常复现模型,打开日志文件,测试误差部分满屏幕的报错,没截图,大意是:模型输出有空值,无法计算fmax和aupr然后因为是服务器上跑,不知道怎么启动调试模式,只能使用print大法打出中间变量。类似这个样子:最后定位到是self.out_bias_gate里面有空值:往回查,发现这个参数只定义了,没有初始化:初始化之后,问题解决:但问题依旧不少:首先,用这个模型训练了两个数据集,但是前一个没有问题,到这个就报值为空的错误。其次,在打印中间变量的时候,出现过一次什么都.原创 2022-04-08 11:15:59 · 541 阅读 · 0 评论 -
Hugging Face的BERT模型进行文本嵌入内存爆炸的解决方法
hugging face中很多预训练好的transformer模型,可以直接下载使用,节省大量时间与算力。昨天使用BERT模型进行文本嵌入。其实很简单,核心代码就几行(text是文本,batch_size是500,总共三万条文本,只取每条文本的[CLS]作文本的整体表示): encoded_input = tokenizer(text[start * 500: min(start * 500 + 500, len(text))], padding=True, truncation=True, r原创 2022-03-30 09:59:35 · 6693 阅读 · 3 评论 -
vscode连接服务器
使用VScode连接服务器的好处在于,vscode可以当成一个网页端的IDE,而使用Pycharm连接服务器则存在文件的同步问题,而且很慢(此处保险起见,加一个前提条件:to the best of our knowledge)。步骤一:安装Vscode没什么好说的,直接官网下载即可。步骤二:安装SSH首先需要确保电脑上有SSH,然后Vscode需要安装remote-ssh插件。具体内容见:使用VScode连接远程服务器的配置方法_junbaba_的博客-CSDN博客_vscode连接服原创 2022-03-07 15:24:26 · 16481 阅读 · 2 评论 -
全连接神经网络的表达能力与泛化能力
在深度学习中,我们经常看到两个概念:表达能力和泛化能力表达能力指的是模型拟合训练集的能力,可以用训练损失来衡量而泛化集指的是模型迁移到测试集中的能力,可以用测试误差来衡量一般来说,全连接的神经网络表达能力很强,很容易过拟合,导致泛化能力较弱于是乎我就突发奇想,做一个小实验:首先随便造一个测试集,输入是x,输出(标签)y是x^2然后需要引入噪声,我的方法十分简单粗暴:直接将标签y随机按比例增加或减少10%以内,变为y*(0.9~1.1)于是乎得到了数据集构造函数:def generate(nu原创 2021-11-14 20:54:55 · 2492 阅读 · 0 评论 -
Transformer-based模型的综述:AMMUS : A Survey of Transformer-based Pretrained Models in NLP
论文地址: https://arxiv.org/abs/2108.055421 导言预训练的来源 最开始是基于规则的学习,后来被机器学习取代 早期机器学习需要特征工程,需要专业领域的知识,耗时 由于硬件和词嵌入的发展,类似于CNN、RNN的深度学习模型出现 问题:除词嵌入外需要从头开始训练模型、需要标记大量实例、成本很高 进而我们期望少量标记实例,尽可能少的训练步数 基于迁移学习(允许重用在源任务中学到的知识,以便在目标任务中很好地执行)的启发: 使用大规模标...原创 2021-11-01 21:16:35 · 3257 阅读 · 0 评论 -
3D信息的分子图自监督表示学习 PRE-TRAINING MOLECULAR GRAPH REPRESENTATION WITH 3D GEOMETRY
原文地址:https://wyliu.com/papers/GraphMVP.pdf摘要分子图表示学习是现代药物和材料发现中的一个基本问题。 分子图通常由其二维拓扑结构来建模,但最近发现三维几何信息在预测分子功能方面起着更为重要的作用。 然而,现实场景中3D信息的缺乏严重阻碍了几何图形表示的学习。 为了应对这一挑战,我们提出了GraphMVP(Graph Multi-View Pre-Training)框架,该框架利用2D拓扑结构和3D几何视图之间的对应和一致性来执行自监督学习(SS...原创 2021-10-20 09:23:21 · 1534 阅读 · 0 评论 -
PyG安装
PyG安装 1.GPU安装1.1查看torch,CUDA版本1.2根据版本号安装支持库 2.CPU安装(推荐新手)2.1 新建虚拟环境(若是初次安装,此步骤也可跳过)2.2 安装cpu版torch并查看版本2.3 根据版本安装支持库 3.检查安装结果 1.GPU安装 pyg是torch-geomet...转载 2021-10-13 17:19:03 · 3001 阅读 · 0 评论 -
根据边集求节点和其对应的度
# edges为边集,(2,E),E为边个数。[[1,2][3,4]]表示有(1,3)(2,4)两条边# 若计算无向图,首先将edges的上下两行颠倒,拼在一起Edges = torch.cat([edges[::-1, :], edges], dim=1)# 然后直接用unique函数完美解决ind, deg = np.unique(edges.cpu().numpy(), return_counts=True) # 节点和对应的度...原创 2021-10-12 20:39:36 · 206 阅读 · 0 评论 -
根据特征矩阵进行聚合
N:边数, V:节点数, s:节点的特征维度目的,将节点i的所有相邻节点的特征求和聚集起来,作为i的特征表示 def forward(self, H, X_node): # H : (N, s) -> (V, s) # X_node : (N, ) mask = torch.stack([X_node] * self.V, 0) # (V, N) mask = mask.float() - torch.unsq...原创 2021-10-12 20:38:53 · 400 阅读 · 0 评论 -
Visdom常用代码
Visdom常用代码文章目录Visdom常用代码vis.linevis.barvis.histogram自定义图// 安装pip install visdom//启动python -m visdom.server# 导包import visdom# 实例化viz = visdom.Visdom(port=8097, server="127.0.0.1",env="OriLinearGNN")# 添加数据viz.line(Y=np.array([[y1, y2]]),原创 2021-10-12 19:35:17 · 257 阅读 · 0 评论