当前位置: 首页 > news >正文

网站建设规范布局wordpress+链接+弹窗

网站建设规范布局,wordpress+链接+弹窗,高校网站建设方案,触屏网站模板深度学习(36)—— 图神经网络GNN(1) 这个系列的所有代码我都会放在git上,欢迎造访 文章目录 深度学习(36)—— 图神经网络GNN(1)1. 基础知识2.使用场景3. 图卷积神经网…

深度学习(36)—— 图神经网络GNN(1)

这个系列的所有代码我都会放在git上,欢迎造访

文章目录

  • 深度学习(36)—— 图神经网络GNN(1)
    • 1. 基础知识
    • 2.使用场景
    • 3. 图卷积神经网络GCN
      • (1)基本思想
    • 4. GNN基本框架——pytorch_geometric
      • (1)数据
      • (2)可视化
      • (3)网络定义
      • (4)训练模型(semi-supervised)

1. 基础知识

  • GNN考虑的事当前的点和周围点之间的关系

  • 邻接矩阵是对称的稀疏矩阵,表示图中各个点之间的关系

  • 图神经网络的输入是每个节点的特征和邻接矩阵

  • 文本数据可以用图的形式表示吗?文本数据也可以表示图的形式,邻接矩阵表示连接关系

  • 邻接矩阵中并不是一个N* N的矩阵,而是一个source,target的2* N的矩阵
    在这里插入图片描述

  • 信息传递神经网络:每个点的特征如何更新??——考虑他们的邻居,更新的方式可以自己设置:最大,最小,平均,求和等

  • GNN可以有多层,图的结构不发生改变,即当前点所连接的点不发生改变(邻接矩阵不发生变化)【卷积中存在感受野的概念,在GNN中同样存在,GNN的感受野也随着层数的增大变大】

  • GNN输出的特征可以干什么?

    • 各个节点的特征组合,对图分类【graph级别任务】
    • 对各个节点分类【node级别任务】
    • 对边分类【edge级别任务】
    • 利用图结构得到特征,最终做什么自定义!

2.使用场景

  • 为什么CV和NLP中不用GNN?
    因为图像和文本的数据格式很固定,传统神经网络格式是固定的,输入的东西格式是固定的
  • 化学、医疗
  • 分子、原子结构
  • 药物靶点
  • 道路交通,动态流量预测
  • 社交网络——研究人
    GNN输入格式比较随意,是不规则的数据结构, 主要用于输入数据不规则的时候

3. 图卷积神经网络GCN

  • 图卷积和卷积完全不同
  • GCN不是单纯的有监督学习,多数是半监督,有的点是没有标签的,在计算损失的时候只考虑有标签的点。针对数据量少的情况也可以训练

(1)基本思想

  • 网络层次:第一层对于每个点都要做更新,最后输出每个点对应的特征向量【一般不会做特别深层的】
  • 图中的基本组成:G(原图)A(邻接)D(度)F(特征)
  • 度矩阵的倒数* 邻接矩阵 *度矩阵的倒数——>得到新的邻接矩阵【左乘对行做归一化,右乘对列做归一化】
  • 两到三层即可,太多效果不佳

4. GNN基本框架——pytorch_geometric

它实现了各种GNN的方法
注意:安装过程中不要pip install,会失败!根据自己的device和python版本去下载scatter,pattern等四个依赖,先安装他们然后再pip install torch_geometric==2.0
这里记得是2.0版本否则会出现 TypeError: Expected ‘Iterator‘ as the return annotation for __iter__ of SMILESParser, but found ty
献上github地址:这里

下面是一个demo

(1)数据

这里使用的是和这个package提供的数据,具体参考:club
在这里插入图片描述

from torch_geometric.datasets import KarateClubdataset = KarateClub()
print(f'Dataset: {dataset}:')
print('======================')
print(f'Number of graphs: {len(dataset)}')
print(f'Number of features: {dataset.num_features}')
print(f'Number of classes: {dataset.num_classes}')data = dataset[0]  # Get the first graph object.

在torch_geometric中图用Data的格式,Data的对象:可以在文档中详细了解在这里插入图片描述
其中的属性

  • edge_index:表示图的连接关系(start,end两个序列)
  • node features:每个点的特征
  • node labels:每个点的标签
  • train_mask:有的节点没有标签(用来表示哪些节点要计算损失)

(2)可视化

from torch_geometric.utils import to_networkxG = to_networkx(data, to_undirected=True)
visualize_graph(G, color=data.y)

在这里插入图片描述

(3)网络定义

GCN layer的定义:在这里插入图片描述
可以在官网的文档做详细了解

在这里插入图片描述
卷积层就有很多了:
在这里插入图片描述

import torch
from torch.nn import Linear
from torch_geometric.nn import GCNConvclass GCN(torch.nn.Module):def __init__(self):super().__init__()torch.manual_seed(1234)self.conv1 = GCNConv(dataset.num_features, 4) # 只需定义好输入特征和输出特征即可self.conv2 = GCNConv(4, 4)self.conv3 = GCNConv(4, 2)self.classifier = Linear(2, dataset.num_classes)def forward(self, x, edge_index):h = self.conv1(x, edge_index) # 输入特征与邻接矩阵(注意格式,上面那种)h = h.tanh()h = self.conv2(h, edge_index)h = h.tanh()h = self.conv3(h, edge_index)h = h.tanh()  # 分类层out = self.classifier(h)return out, hmodel = GCN()
print(model)_, h = model(data.x, data.edge_index)
print(f'Embedding shape: {list(h.shape)}')# 输出最后分类前的中间特征shapevisualize_embedding(h, color=data.y)

这时很分散
在这里插入图片描述

(4)训练模型(semi-supervised)

import timemodel = GCN()
criterion = torch.nn.CrossEntropyLoss()  # Define loss criterion.
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)  # Define optimizer.def train(data):optimizer.zero_grad()  out, h = model(data.x, data.edge_index) #h是两维向量,主要是为了画图方便 loss = criterion(out[data.train_mask], data.y[data.train_mask])  # semi-supervisedloss.backward()  optimizer.step()  return loss, hfor epoch in range(401):loss, h = train(data)if epoch % 10 == 0:visualize_embedding(h, color=data.y, epoch=epoch, loss=loss)time.sleep(0.3)

然后就可以看到一系列图,看点的变化情况了

http://www.yayakq.cn/news/117881/

相关文章:

  • 重庆网站推广转化率广州新闻报道
  • 重庆定制网站开发企业电子商务网站的建设方式
  • 建设网站流程北京房地产最新消息
  • 蝶山网站建设网站数据库多大合适
  • 郑州航空港区建设局网站aspnet网站开发书
  • 网站建设网站优化微信saas平台
  • 做英语网站网站推广信息
  • 成都美食网站设计论文wordpress文章聚合
  • 西安知名的集团门户网站建设企业招聘网站建设方案
  • 企梦云网站建设建设一个同城购物网站
  • 网站建设资讯版块如何做用户运营网络营销案例2022
  • 做彩妆网站的公司双语网站费用
  • 温州手机网站推广公司部门职责及配置
  • 找个人做网站软件开发报价的计算方法
  • 网站平台建设合作协议申请域名要多少钱
  • 移动端网站推广阿里云的云服务器做网站用哪种
  • 广州设计企业网站qq浏览器在线打开网页
  • 网站建设与运营的课程总结开网店要建网站平台吗
  • 郑州快速建站模板百度高级搜索页面的网址
  • 青岛网站策划成品网站源码1688体验区
  • 嘉祥网站建设多少钱网站图片 优化
  • 徐州网站开发培训松江品划网站建设
  • 周浦高端网站建设公司网站做等报定级工作要多久
  • 海兴县网站建设价格做网站学哪些语言
  • php网站开发文档模板网页设计前端要学什么
  • 购物网站app推广方案给WordPress添加视频播放页
  • 网站初期缺点建设淘宝优惠券网站
  • 东莞百度网站优化英文网站如何做seo
  • 网站开发有哪些新技术wordpress验证码无效
  • 企业网站建设计划自驾游黄山风景区旅游攻略