gcn代码pytorch_GCN的简单实现(pytorch)

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)))return self.fc3(self.A.mm(X))#获得空手道俱乐部数据
G = nx.karate_club_graph()
A = nx.adjacency_matrix(G).todense()
#A需要正规化
A_normed = normalize(torch.FloatTensor(A),True)N = len(A)
X_dim = N# 没有节点的特征,简单用一个单位矩阵表示所有节点
X = torch.eye(N,X_dim)
# 正确结果
Y = torch.zeros(N,1).long()
# 计算loss的时候要去掉没有标记的样本
Y_mask = torch.zeros(N,1,dtype=torch.uint8)
# 一个分类给一个样本
Y[0][0]=0
Y[N-1][0]=1
#有样本的地方设置为1
Y_mask[0][0]=1
Y_mask[N-1][0]=1#真实的空手道俱乐部的分类数据
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] = 1# 我们的GCN模型
gcn = GCN(A_normed ,X_dim,2)
#选择adam优化器
gd = torch.optim.Adam(gcn.parameters())for i in range(300):#转换到概率空间y_pred =F.softmax(gcn(X),dim=1)#下面两行计算cross entropyloss = (-y_pred.log().gather(1,Y.view(-1,1)))#仅保留有标记的样本loss = loss.masked_select(Y_mask).mean()#梯度下降#清空前面的导数缓存gd.zero_grad()#求导loss.backward()#一步更新gd.step()if i%20==0 :_,mi = y_pred.max(1)print(mi)#计算精确度print((mi == Real).float().mean())

3132a14c9964b0aec4a1648fa6299b70.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql的check语言_check在SQL语句中的意思是什么?

展开全部在SQL中 CHECK 的意思:约束CHECK 约束用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么32313133353236313431303231363533e58685e5aeb931333365646261该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定…

当电压放大电路的开路增益和输出电阻固定后_放大器的设计基础

放大器是电子电路(尤其是模拟电路)中的主要构件之一,使用放大器,它们会提高信号电平。放大器是一个术语,用于描述增加输入信号强度的电路。放大器广泛用于从音频应用到射频应用的各个领域中。但是,对于所有放大器,无论…

mysql数据库 auto_increment_mysql数据库 auto_increment

MySQL内核月报 2014.09-MySQL 捉虫动态auto_increment背景:Innodb引擎使用B_tree结构保存表数据,这样就需要一个唯一键表示每一行记录(比如二级索引记录引用)。Innodb表定义中处理主键的逻辑是:1.如果表定义了主键,就使用主键唯一…

javascript 嵌入python_通过Python将区块链数据嵌入Javascript,这是正确的方法吗?

你说得对。此页面是使用JavaScript异步填充的,因此BeautifulSoup和类似的工具将无法看到您试图获取的特定内容。但是,如果您记录浏览器的网络流量,您可以看到一些(XHR)httpget请求被发送到restapi,restapi以JSON形式提供其结果。这个JSON恰好包含您要查找的信息。它实际上会向不…

linux 嵌入式 快照_Linux 系统之Systemd

标签:子贡问为仁。子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”——孔子(春秋)《论语卫灵公》【工欲善其事,必先利其器】掌握一门技术,知道其发展历程是非常重要的…

mysql php 乱码问题_解决php与mysql中文乱码问题

感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!MysqL对中文的支持程度还是很有限的,尤其是新手,但凡出现乱码问题,就会头大。乱码问题1:用PHPmyAdmin操作MysqL数据库汉字显示正常&…

mysql xdevapi_MySql Connector/C++8简介

MySql Connector/C8是一个用于连接MySQL服务器的C应用程序。Connector/C8可用于访问实现文档存储的 MySQL服务器,或者使用SQL查询以传统方式访问。它支持使用XDevAPI开发C 应用程序,或使用XDevAPI for C开发纯C应用程序,同时Connector/C8还支…

mysql随机选择记录表_Mysql表中取随机记录

RAND()是Mysql中的取随机数函数,该函数返回一个float型数值v,v的值为0 例如: mysql> SELECT RAND(); -> 0.9233482386203 mysql> SELECT RAND(20); -> 0.15888261251047 mysql> SELECT RAND(20); -> 0.15888261251047 mysq…

国家缩写大全 mysql_各个国家的名称缩写和时区列表

A字头AE-阿联酋(UNITED EMIRATES)AF-阿富汗(AFGHANISTAN)AL-阿尔巴尼亚(ALBANIA)AM-亚美尼亚(ARMENIA)AO-安哥拉(ANGOLA)AR-阿根廷(ARGENTINA)AT-奥地利(AUSTRIA)AU-澳大利亚(AUSTRALIA)AZ-阿塞拜疆(AZERBAIJAN(REPUBLIC))B字头BD-孟加拉(BANGLADESH)BE-比利时(BELGIUM)BF-布基…

lisp获取图名_cadlisp获取当前视图坐标

答:复制下面的脚本到命令行回车即可加载,输入pldd,程序会提示选择pline,选择pline后会打印所有的三维坐标 (defun c:pldd (/ wb cc ss1 aa pts bhbz ent) (setq ent (car (entsel "\n请选择PLINE"))) (setq wb (entget …

mysql update column_MySQL8.0 新特性:Partial Update of LOB Column

摘要: MySQL8.0对json进行了比较完善的支持, 我们知道json具有比较特殊的存储格式,通常存在多个key value键值对,对于类似更新操作通常不会更新整个json列,而是某些键值。 对于某些复杂的应用,json列的数据可能会变的非…

myeclipse打包java文件_MyEclipse将Java项目打包成jar文件的三种方法

方案一:用Eclipse自带的Export功能步骤1:准备主清单文件 “MANIFEST.MF”,由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下:M…

java 对象等于_java 之类对象等于对象 | 学步园

/** 使per2等于per1,其实是引用,当改变per2的属性时,实质上是改变了per2,per1所共同指向的堆内存里的数据。*/package StringClass;/**** author zendao*/public class CopyAClass {public static void main(String args[]) {NewPeople per1 …

java insert access_java连接access时无法使用INSERT语句添加数据

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求大神指教~~~~java连接access数据库的问题,那一句话的其他功能和access中运行都没有问题,但是就是不能插入数据库中去,好纠结,到底是怎麼回事?public static void Update…

java程序模拟atm机_Java项目实现模拟ATM机

本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下项目名称模拟ATM机项目描述简单实现ATM机功能代码实现测试类public class Test {//模拟多功能ATM机public static void main(String[] args) {ATM atm new ATM();atm.opearte(…

java计算器流程图_帮帮忙:Java小计算器代码,及需求分析.流程图.

展开全部package example;import java.awt.*;import java.awt.event.*;public class Calculator extends Frame {/*** 本实例实现功能如下 1.普通加减乘除运算 2.小数点的情况已经解32313133353236313431303231363533e58685e5aeb931333236393738决 3.开始按0已经解决 4.消去键可…

mysql 5.6.22编译_saltstack全编译安装mysql5.6.22

关闭selinux和firewalld,iptables开放4505和4506端口目的:通过salt-master实现对salt-minion的批量自动安装mysql步骤(都在master执行):1,检测连通性salt ‘*‘ test.ping2,下载mysql的源码包至/srv/salt/mysql/files/…

java 邮件跟踪_如何跟踪邮件已读状态(Java)

>图片的展示形式:html中图片元素表示:其中src部分是比较好玩的,我们可以用图片服务器链接地址,例如:我们也可以使用base64的图片字符串,例如:>利用图片加载来跟踪用户打开邮件状态&#x…

vs2012 entity framework mysql_MVC4,MVC3,VS2012+ entity framework Migration from Sqlserver

在开发的初期个人认为因VS与Sqlserver的配合很默契,即可以方便的实现Code First,又可以使用SqlServer Manager很漂亮的进行建模与变更,也许是个人的使用习惯MS的界面做的很好,乎开源的产品美感上都追不上商用版。 所以个人比较喜欢…

用java做一个截图工具_Java制作屏幕截图软件(还可以保存到剪切板内)

原标题:Java制作屏幕截图软件(还可以保存到剪切板内)package com.kaige123;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedIm…