利用论文《SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS》中的原理进行简单的GCN测试,具体原理可看这篇论文。

import torch
import torch.nn as nn
import torch.nn.functional as Fimport networkx as nxdef normalize(A, symmetric=True):# A = A+IA = A + torch.eye(A.size(0))d = A.sum(1)if symmetric:#D = D^-1/2D = torch.diag(torch.pow(d , -0.5))return D.mm(A).mm(D)else:# D=D^-1D =torch.diag(torch.pow(d,-1))return D.mm(A)class GCN(nn.Module):'''Z = AXW'''def __init__(self , A, dim_in , dim_out):super(GCN,self).__init__()self.A = Aself.fc1 = nn.Linear(dim_in ,dim_in,bias=False)self.fc2 = nn.Linear(dim_in,dim_in//2,bias=False)self.fc3 = nn.Linear(dim_in//2,dim_out,bias=False)def forward(self, X):'''计算三层gcn'''X = F.relu(self.fc1(self.A.mm(X)))X = F.relu(self.fc2(self.A.mm(X)))X = self.fc3(self.A.mm(X))return F.softmax(X, dim=1)#获得空手道俱乐部数据
G = nx.karate_club_graph()
A = nx.adjacency_matrix(G).todense()
A_normed = normalize(torch.FloatTensor(A.astype(int)),True)N = len(A)
X_dim = N# node features
X = torch.eye(N, X_dim)
# 分类结果,0 or 1
Y = torch.zeros(N, 1).long()
Y_mask = torch.zeros(N, 1, dtype=torch.uint8)# 总共有2类,分别给第一类的第一个样本和第二类的最后一个样本设置ground truth label
# 利用这两个带标签的样本进行半监督学习
Y[0][0] = 0
Y[N-1][0] = 1# 指示哪些样本已经提前设置了标签
Y_mask[0][0] = 1
Y_mask[N-1][0] = 1# ground truth
Real = torch.zeros(34, dtype=torch.long)
for i in [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 17, 18, 20, 22]:Real[i-1] = 0
for i in [9, 10, 15, 16, 19, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]:Real[i-1] = 1gcn = GCN(A_normed, X_dim, 2)
gd = torch.optim.Adam(gcn.parameters())for i in range(300):y_pred = gcn(X)#下面两行计算cross entropyloss = (-y_pred.log().gather(1, Y.view(-1, 1)))loss = loss.masked_select(Y_mask).mean()   # 返回mask标记为1的样本对应的损失gd.zero_grad()loss.backward()gd.step()if i % 20 == 0:_, mi = y_pred.max(1)print("loss: ", loss.item())print(mi)print("acc: ", (mi == Real).float().mean().item())

基于切比雪夫多项式的简单GCN网络相关推荐

  1. 一款基于RxJava2+Retrofit2实现简单易用的网络请求框架

    本库是一款基于RxJava2+Retrofit2实现简单易用的网络请求框架,结合android平台特性的网络封装库,采用api链式调用一点到底,集成cookie管理,多种缓存模式,极简https配置, ...

  2. gcn在图像上的应用_每日摘要|基于CNN 特征的图像卷积网络识别杂草和作物

    文章信息 标题:CNN feature based graph convolutional network for weed and crop recognition in smart farming ...

  3. PluckerNet:一种基于3D线匹配的配准网络(CVPR2021)

    标题:PluckerNet: Learn to Register 3D Line Reconstructions 作者:Liu Liu, Hongdong Li , Haodong Yao and R ...

  4. Chemistry.AI | 基于图卷积神经网络(GCN)预测分子性质

    GCN: Graph Convolutional Network(图卷积网络) 环境准备 Python版本:Python 3.6.8 PyTorch版本:PyTorch1.1.0 RDKit版本:RD ...

  5. 基于注意力机制的图卷积网络预测药物-疾病关联

    BIB | 基于注意力机制的图卷积网络预测药物-疾病关联 智能生信 人工智能×生物医药 ​关注 科学求真 赢 10 万奖金 · 院士面对面 9 人赞同了该文章 今天给大家介绍华中农业大学章文教授团队在 ...

  6. 把一个dataset的表放在另一个dataset里面_视频自监督一. STCR: 一个基于数据增强的简单有效正则项 (降低静态信息的影响)...

    视频自监督一. STCR: 一个基于数据增强的简单有效正则项 (降低静态信息的影响) 今天介绍一个我们近期做的关于视频自监督的简单工作: Self-supervised learning using ...

  7. CVPR 2022 | GeoTransformer:基于Transformer的点云配准网络

    ©作者 | 秦政 单位 | 国防科技大学 研究方向 | 三维视觉 本文提出了一种基于 Transformer 的点云配准网络.通过引入点云中的全局结构信息,GeoTransformer 能够显著提高 ...

  8. Xamarin.Android之封装个简单的网络请求类

    http://doc.okbase.net/catcher1994/archive/220195.html Catcher8 2016/4/23 0:28:50 阅读(72) 评论(0) 一.前言 回 ...

  9. 行政编码json_基于FME国内县级及以上网络公开行政区划边界的获取

    基于FME国内县级及以上网络公开行政区划边界的获取 在上一篇记录<基于FME零编码获取新冠病毒(COVID-2019)患者曾逗留小区(场所)数据及可视化>中,给自己挖了个坑,这篇记录就是为 ...

  10. 判断图像局部过暗_CVPR 2020丨基于记忆增强的全局局部整合网络:更准确的视频物体检测方法...

    编者按:在视频物体检测任务中,由于相机失焦.物体遮挡等问题,仅基于图像的目标检测器很可能达不到令人满意的效果.针对此类问题,微软亚洲研究院提出了基于记忆增强的全局-局部整合网络(Memory Enha ...

最新文章

  1. HDFS文件读写流程
  2. python表达式3and not5的值_太原理工大学python考试题总结
  3. Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流
  4. Part1_3 python字符串,列表,元组,字典
  5. PMCAFF产品经理社区原创专栏,产品圈的干货看这儿就够了
  6. 563. 二叉树的坡度
  7. 从源码层面带你实现一个自动注入注解
  8. Spring源码学习的初步体会
  9. 程序员绩效总结_年终总结怎么写?
  10. Hive四种数据导入方式介绍
  11. 学习Spring必学的Java基础知识(2)----动态代理
  12. 无监督学习︱GAN 在 NLP 中遇到瓶颈+稀疏编码自学习+对偶学习
  13. python快速示例_python实现快速排序的示例(二分法思想)
  14. 类中添加log4j日志
  15. 技嘉ide模式怎么改_技嘉主板bios设置ide
  16. 显著性检测论文梳理(Saliency Detection)
  17. Arnold材质节点篇-随机颜色抖动color_jitter、三平面triplanar、ambient_occlusion环境光遮蔽、curvature曲率
  18. 微信IOS navigator.getUserMedia undefined
  19. 有哪些IT初学者(新人)成长为技术大牛的真实经历?
  20. Linux 命令 htop 的使用

热门文章

  1. CSS与CSS3美化页面
  2. windows桌面美化
  3. 使用redis做缓存处理时出现的问题
  4. C# 获取汉语拼音全码及简码
  5. zedgraph显示最小刻度_关于ZedGraph几个难点
  6. json对象数组转数组方法
  7. python继承封装多态简单理解_Python面向对象编程:封装、继承、多态(基础篇十)...
  8. OpenCV下载/OpenCV国内镜像/opencv_contrib下载
  9. 计算机控制实验室装置,自控/计控原理实验箱
  10. php larvel4.2,Laravel 4.2参考手册 pdf