Python(TensorFlow和PyTorch)及C++注意力网络导图

🎯要点

  1. 谱图神经网络
  2. 计算注意力分数
  3. 对比图神经网络、卷积网络和图注意力网络
  4. 药物靶标建模学习和预测相互作用
  5. 腹侧和背侧皮质下结构
  6. 手写字体字符序列文本识别
  7. 组织病理学图像分析
  8. 长短期记忆财务模式预测相关性
  9. 生物医学图像特征学习和迭代纠正
    在这里插入图片描述

Python注意力机制

对于图卷积网络,图卷积运算产生邻居节点特征的归一化和。
h i ( l + 1 ) = σ ( ∑ j ∈ N ( i ) 1 c i j W ( l ) h j ( l ) ) h_i^{(l+1)}=\sigma\left(\sum_{j \in N (i)} \frac{1}{c_{i j}} W^{(l)} h_j^{(l)}\right) hi(l+1)=σ jN(i)cij1W(l)hj(l)
其中 N ( i ) N (i) N(i) 是其一跳邻居的集合(要在集合中包含 v i v_i vi,只需向每个节点添加一个自循环), c i j = ∣ N ( i ) ∣ ∣ N ( j ) ∣ c_{i j}=\sqrt{| N (i)|} \sqrt{| N (j)|} cij=N(i) N(j) 是基于图结构的归一化常数, σ \sigma σ 是激活函数(图卷积网络使用 ReLU), W ( l ) W^{(l)} W(l) 是节点级特征的共享权重矩阵转变。

图注意力网络引入了注意力机制来替代静态归一化卷积运算。下面是根据层 l l l 的嵌入计算层 l + 1 l+1 l+1 的节点嵌入 h i ( l + 1 ) h_i^{(l+1)} hi(l+1) 的方程。
在这里插入图片描述
z i ( l ) = W ( l ) h i ( l ) ( 1 ) z_i^{(l)}=W^{(l)} h_i^{(l)}\qquad(1) zi(l)=W(l)hi(l)(1)

e i j ( l ) = LeakyReLU ⁡ ( a ⃗ ( l ) T ( z i ( l ) ∥ z j ( l ) ) ) ( 2 ) e_{i j}^{(l)}=\operatorname{LeakyReLU}\left(\vec{a}^{(l)^T}\left(z_i^{(l)} \| z_j^{(l)}\right)\right)\qquad(2) eij(l)=LeakyReLU(a (l)T(zi(l)zj(l)))(2)

α i j ( l ) = exp ⁡ ( e i j ( l ) ) ∑ k ∈ N ( i ) exp ⁡ ( e i k ( l ) ) ( 3 ) \alpha_{i j}^{(l)}=\frac{\exp \left(e_{i j}^{(l)}\right)}{\sum_{k \in N (i)} \exp \left(e_{i k}^{(l)}\right)}\qquad(3) αij(l)=kN(i)exp(eik(l))exp(eij(l))(3)

h i ( l + 1 ) = σ ( ∑ j ∈ N ( i ) α i j ( l ) z j ( l ) ) ( 4 ) h_i^{(l+1)}=\sigma\left(\sum_{j \in N (i)} \alpha_{i j}^{(l)} z_j^{(l)}\right)\qquad(4) hi(l+1)=σ jN(i)αij(l)zj(l) (4)

方程(1)是下层嵌入 h i ( l ) h_i^{(l)} hi(l)的线性变换, W ( l ) W^{(l)} W(l)是其可学习的权重矩阵。方程(2)计算两个邻居之间的成对非标准化注意力得分。

方程 1:

def edge_attention(self, edges):z2 = torch.cat([edges.src['z'], edges.dst['z']], dim=1)a = self.attn_fc(z2)return {'e' : F.leaky_relu(a)}

方程 2:

def edge_attention(self, edges):z2 = torch.cat([edges.src['z'], edges.dst['z']], dim=1)a = self.attn_fc(z2)return {'e' : F.leaky_relu(a)}

在这里,它首先连接两个节点的 z z z 嵌入,其中 ||表示串联,然后取它和可学习权重向量 a ⃗ ( l ) \vec{a}^{(l)} a (l) 的点积,最后应用 LeakyReLU。这种形式的注意力通常称为附加注意力,与 Transformer 模型中的点积注意力形成对比。方程(3)应用 softmax 来标准化每个节点传入边上的注意力分数。方程(4)与图卷积网络类似。来自邻居的嵌入被聚合在一起,并按注意力分数进行缩放。

方程 3 和 4:

def reduce_func(self, nodes):alpha = F.softmax(nodes.mailbox['e'], dim=1)h = torch.sum(alpha * nodes.mailbox['z'], dim=1)return {'h' : h}

图注意力网络引入多头注意力来丰富模型容量并稳定学习过程。每个注意力头都有自己的参数,它们的输出可以通过两种方式合并:
h i ( l + 1 ) = ∥ k = 1 K σ ( ∑ j ∈ N ( i ) α i j k W k h j ( l ) ) h_i^{(l+1)}=\|_{k=1}^K \sigma\left(\sum_{j \in N (i)} \alpha_{i j}^k W^k h_j^{(l)}\right) hi(l+1)=k=1Kσ jN(i)αijkWkhj(l)

h i ( l + 1 ) = σ ( 1 K ∑ k = 1 K ∑ j ∈ N ( i ) α i j k W k h j ( l ) ) h_i^{(l+1)}=\sigma\left(\frac{1}{K} \sum_{k=1}^K \sum_{j \in N (i)} \alpha_{i j}^k W^k h_j^{(l)}\right) hi(l+1)=σ K1k=1KjN(i)αijkWkhj(l)

class MultiHeadLayer(nn.Module):def __init__(self, g, in_dim, out_dim, num_heads, merge='cat'):super(MultiHeadLayer, self).__init__()self.heads = nn.ModuleList()for i in range(num_heads):self.heads.append(Layer(g, in_dim, out_dim))self.merge = mergedef forward(self, h):head_outs = [attn_head(h) for attn_head in self.heads]if self.merge == 'cat':return torch.cat(head_outs, dim=1)else:return torch.mean(torch.stack(head_outs))

定义两层注意力模型

class TAM(nn.Module):def __init__(self, g, in_dim, hidden_dim, out_dim, num_heads):super(TAM, self).__init__()self.layer1 = MultiHeadLayer(g, in_dim, hidden_dim, num_heads)self.layer2 = MultiHeadLayer(g, hidden_dim * num_heads, out_dim, 1)def forward(self, h):h = self.layer1(h)h = F.elu(h)h = self.layer2(h)return h

加载数据集

from xl import Graph
from xl.data import citation_graph as citegrh
import networkx as nxdef load_cora_data():data = citegrh.load_cora()features = torch.FloatTensor(data.features)labels = torch.LongTensor(data.labels)mask = torch.BoolTensor(data.train_mask)g = Graph(data.graph)return g, features, labels, mask

训练

import time
import numpy as npg, features, labels, mask = load_cora_data()net = TAM(g,in_dim=features.size()[1],hidden_dim=8,out_dim=7,num_heads=2)optimizer = torch.optim.Adam(net.parameters(), lr=1e-3)dur = []
for epoch in range(30):if epoch >= 3:t0 = time.time()logits = net(features)logp = F.log_softmax(logits, 1)loss = F.nll_loss(logp[mask], labels[mask])optimizer.zero_grad()loss.backward()optimizer.step()if epoch >= 3:dur.append(time.time() - t0)print("Epoch {:05d} | Loss {:.4f} | Time(s) {:.4f}".format(epoch, loss.item(), np.mean(dur)))

👉更新:亚图跨际

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

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

相关文章

深度学习Day-33:Semi-Supervised GAN理论与实战

🍨 本文为:[🔗365天深度学习训练营] 中的学习记录博客 🍖 原作者:[K同学啊 | 接辅导、项目定制] 一、 基础配置 语言环境:Python3.8编译器选择:Pycharm深度学习环境: torch1.12.1c…

3 种自然语言处理(NLP)技术:RNN、Transformers、BERT

自然语言处理 (NLP) 是人工智能的一个领域,旨在使机器能够理解文本数据。NLP 研究由来已久,但直到最近,随着大数据和更高计算处理能力的引入,它才变得更加突出。 随着 NLP 领域的规模越来越大,许多研究人员都试图提高…

【 html+css 绚丽Loading 】000051 方寸轮回矩

前言:哈喽,大家好,今天给大家分享今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f…

蓝桥杯-基于STM32G432RBT6的LCD进阶(LCD界面切换以及高亮显示界面)

目录 一、页面切换内容详解 1.逻辑解释 2.代码详解 code.c(内含详细讲解) code.h main.c 3.效果图片展示 ​编辑 二、页面选项高亮内容详解 1.逻辑解释 2.读入数据 FIRST.第一种高亮类型 code.c(内含代码详解) code.…

[000-01-008].第05节:OpenFeign特性-重试机制

我的后端学习大纲 SpringCloud学习大纲 1.1.重试机制的默认值: 1.重试机制默认是关闭的,给了默认值 1.2.测试重试机制的默认值: 1.3.开启Retryer功能: 1.修改配置文件YML的配置: 2.新增配置类: packa…

大模型时代:普通人如何获利

随着人工智能技术的飞速发展,我们正步入一个以大模型为驱动力的新时代。这些大型语言模型,如GPT-3和BERT,已经在各个领域展现出惊人的能力,包括文本生成、翻译、问答等。这些技术的进步不仅改变了我们的生活,也为普通人…

【ACM出版】第三届人工智能与智能信息处理国际学术会议(AIIIP 2024,10月25-27)

第三届人工智能与智能信息处理国际学术会议(AIIIP 2024) 2024 3rd International Conference on Artificial Intelligence and Intelligent Information Processing 中国-天津 | 2024年10月25-27日 | 会议官网:www.aiiip.net 官方信息 会议…

Redis常用操作及springboot整合redis

1. Redis和Mysql的区别 数据模型:二者都是数据库,但是不同的是mysql是进行存储到磁盘当中,而Redis是进行存储到内存中. 数据模型 : mysql的存储的形式是二维表而Redis是通过key-value键值对的形式进行存储数据. 实际的应用的场景: Redis适合于需要快速读写的场景&…

[Linux]:进程间通信(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. system V通信 前面我们所探究的通信方式都是基于管道文件的,而…

深入解析代理模式:静态代理、JDK 动态代理和 CGLIB 的全方位对比!

代理模式(Proxy Pattern)是一种结构型设计模式,它提供了对象的替身,即代理对象来控制对实际对象的访问。通过代理对象,可以在不修改目标对象的情况下,扩展或控制其功能。例如,代理模式可以用于延…

Cortex-A7的GIC(通用中断控制器):边沿触发和电平触发中断的区别

0 资料 ARM Generic Interrupt Controller Architecture version 2.0 Architecture Specification1 边沿触发和电平触发中断的区别 1.1 边沿触发和电平触发中断官方解释 边沿触发(Edge-triggered) This is an interrupt that is asserted on detectio…

DFS:深搜+回溯+剪枝实战解决OJ问题

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 排列、子集问题 1.1 全排列I 1.2 子集I 1.3 找出所有子集的异或总和 1.4 全排列II 1.5 字母大小写全排列 1.6 优美的排列 二 组合问题 2.1 电话号码的数字组合 …

物联网架构

1 三层架构 三层架构就像我们拿着一个设备,通过网络直接连接到服务器获取结果,步骤简单。 举个例子:智能家居的温度监控系统 1. 感知层(设备与传感器) 在智能家居系统中,温度传感器被安装在家里的各个房间…

战斗机检测系统源码分享

战斗机检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

4.提升客户服务体验:ChatGPT在客服中的应用(4/10)

本文大纲旨在指导撰写一篇全面探讨ChatGPT如何通过优化客户服务流程、提供实际应用案例和用户反馈,以提升客户服务体验的深入博客文章。 引言 在当今竞争激烈的商业环境中,客户服务已成为企业成功的关键因素。优质的客户服务不仅能够增强客户满意度和忠…

第十一章 【后端】商品分类管理微服务(11.1)——创建父工程

第十一章 【后端】商品分类管理微服务 11.1 创建父工程 项目名称:EasyTradeManagerSystem:Easy 表示简单易用,Trade 表示交易,Manager 表示管理,System 表示系统,强调系统在商品交易管理方面的便捷性,简称 etms。 新建工程 yumi-etms yumi-etms 作为所有模块的父工程,…

1.使用 IDEA 过程中的英语积累 - File 菜单(每一次重点积累 5 个单词)

前言 学习可以不局限于传统的书籍和课堂,各种生活的元素也都可以做为我们的学习对象,本文将利用 IDEA 页面上的各种英文元素来做英语的积累,如此做有 3 大利 这些软件在我们工作中是时时刻刻接触的,借此做英语积累再合适不过&…

QT + WebAssembly + Vue环境搭建

Qt6.7.2安装工具 emsdk安装 git clone https://github.com/emscripten-core/emsdk.git cd emsdk emsdk install 3.1.50 emsdk activate 3.1.50 Qt Creator配置emsdk 效果 参考 GitHub - BrockReece/vue-wasm: Vue web assembly loader Emscripten cmake多版本编译-CSDN博客 …

vue使用TreeSelect设置带所有父级节点的回显

Element Plus的el-tree-select组件 思路: 选中节点时,给选中的节点赋值 pathLabel,pathLabel 为函数生成的节点名字拼接,数据源中不包含。 在el-tree-select组件中设置 props“{ label: ‘pathLabel’ }” 控制选中时input框中回…

如何使用ssm实现企业人事管理系统+vue

TOC ssm628企业人事管理系统vue 研究背景 自计算机发展以来给人们的生活带来了改变。第一代计算机为1946年美国设计,最开始用于复杂的科学计算,占地面积、开机时间要求都非常高,经过数十几的改变计算机技术才发展到今天。现如今已是电子时…