Project Icon

En-transformer

融合等变图神经网络与Transformer的创新架构

En-transformer是一个创新的开源项目,结合了E(n)等变图神经网络与Transformer架构。支持原子和键类型嵌入,处理稀疏邻居,传递连续边特征。已应用于抗体CDR环设计,并可用于蛋白质骨架坐标去噪等分子建模任务。项目提供简便的安装和使用方法,适合研究人员和开发者探索。

E(n)-等变变换器

E(n)-等变变换器的实现,它扩展了Welling的E(n)-等变图神经网络的思想,结合了注意力机制和变换器架构的理念。

更新:用于设计抗体中的CDR环!

安装

$ pip install En-transformer

使用方法

import torch
from en_transformer import EnTransformer

model = EnTransformer(
    dim = 512,
    depth = 4,                       # 深度
    dim_head = 64,                   # 每个头的维度
    heads = 8,                       # 头的数量
    edge_dim = 4,                    # 边特征的维度
    neighbors = 64,                  # 只在N个最近邻坐标之间进行注意力计算 - 设为0可关闭此功能
    talking_heads = True,            # 使用Shazeer的talking heads https://arxiv.org/abs/2003.02436
    checkpoint = True,               # 使用检查点以便以较小的内存代价增加深度(并增加关注的邻居数)
    use_cross_product = True,        # 使用叉积向量(由@MattMcPartlon提出的想法)
    num_global_linear_attn_heads = 4 # 如果上面的邻居数较少,可以分配一定数量的注意力头通过线性注意力弱关注所有其他节点(https://arxiv.org/abs/1812.01243)
)

feats = torch.randn(1, 1024, 512)
coors = torch.randn(1, 1024, 3)
edges = torch.randn(1, 1024, 1024, 4)

mask = torch.ones(1, 1024).bool()

feats, coors = model(feats, coors, edges, mask = mask)  # (1, 1024, 512), (1, 1024, 3)

让网络同时处理原子和键类型的嵌入

import torch
from en_transformer import EnTransformer

model = EnTransformer(
    num_tokens = 10,       # 唯一节点的数量,比如原子
    rel_pos_emb = True,    # 如果你的序列不是无序集合,将此设为true。它将加速收敛
    num_edge_tokens = 5,   # 唯一边的数量,比如键类型
    dim = 128,
    edge_dim = 16,
    depth = 3,
    heads = 4,
    dim_head = 32,
    neighbors = 8
)

atoms = torch.randint(0, 10, (1, 16))    # 10种不同类型的原子
bonds = torch.randint(0, 5, (1, 16, 16)) # 5种不同类型的键(n x n)
coors = torch.randn(1, 16, 3)            # 原子空间坐标

feats_out, coors_out = model(atoms, coors, edges = bonds) # (1, 16, 512), (1, 16, 3)

如果你只想关注由邻接矩阵定义的稀疏邻居(例如原子),你需要设置一个额外的标志,然后传入N x N邻接矩阵。

import torch
from en_transformer import EnTransformer

model = EnTransformer(
    num_tokens = 10,
    dim = 512,
    depth = 1,
    heads = 4,
    dim_head = 32,
    neighbors = 0,
    only_sparse_neighbors = True,    # 必须设置为true
    num_adj_degrees = 2,             # 从传入的一级邻居派生的度数
    adj_dim = 8                      # 是否将邻接度信息作为边嵌入传递
)

atoms = torch.randint(0, 10, (1, 16))
coors = torch.randn(1, 16, 3)

# 简单假设一个单链原子
i = torch.arange(atoms.shape[1])
adj_mat = (i[:, None] <= (i[None, :] + 1)) & (i[:, None] >= (i[None, :] - 1))

# 必须传入邻接矩阵
feats_out, coors_out = model(atoms, coors, adj_mat = adj_mat) # (1, 16, 512), (1, 16, 3)

如果你需要传入连续的边

import torch
from en_transformer import EnTransformer
from en_transformer.utils import rot

model = EnTransformer(
    dim = 512,
    depth = 1,
    heads = 4,
    dim_head = 32,
    edge_dim = 4,
    num_nearest_neighbors = 0,
    only_sparse_neighbors = True
)
feats = torch.randn(1, 16, 512)
coors = torch.randn(1, 16, 3)
edges = torch.randn(1, 16, 16, 4)

i = torch.arange(feats.shape[1])
adj_mat = (i[:, None] <= (i[None, :] + 1)) & (i[:, None] >= (i[None, :] - 1))

feats1, coors1 = model(feats, coors, adj_mat = adj_mat, edges = edges)

示例

要运行蛋白质主链坐标去噪的玩具任务,首先安装 sidechainnet

$ pip install sidechainnet

然后

$ python denoise.py

待办事项

引用

@misc{satorras2021en,
    title 	= {E(n) 等变图神经网络}, 
    author 	= {Victor Garcia Satorras and Emiel Hoogeboom and Max Welling},
    year 	= {2021},
    eprint 	= {2102.09844},
    archivePrefix = {arXiv},
    primaryClass = {cs.LG}
}
@misc{shazeer2020talkingheads,
    title   = {会说话的头部注意力}, 
    author  = {Noam Shazeer and Zhenzhong Lan and Youlong Cheng and Nan Ding and Le Hou},
    year    = {2020},
    eprint  = {2003.02436},
    archivePrefix = {arXiv},
    primaryClass = {cs.LG}
}
@misc{liu2021swin,
    title   = {Swin Transformer V2:扩展容量和分辨率},
    author  = {Ze Liu and Han Hu and Yutong Lin and Zhuliang Yao and Zhenda Xie and Yixuan Wei and Jia Ning and Yue Cao and Zheng Zhang and Li Dong and Furu Wei and Baining Guo},
    year    = {2021},
    eprint  = {2111.09883},
    archivePrefix = {arXiv},
    primaryClass = {cs.CV}
}
@inproceedings{Kim2020TheLC,
    title   = {自注意力的李普希茨常数},
    author  = {Hyunjik Kim and George Papamakarios and Andriy Mnih},
    booktitle = {国际机器学习会议},
    year    = {2020},
    url     = {https://api.semanticscholar.org/CorpusID:219530837}
}
@article {Mahajan2023.07.15.549154,
    author  = {Sai Pooja Mahajan and Jeffrey A. Ruffolo and Jeffrey J. Gray},
    title   = {来自等变图转换器的上下文蛋白质和抗体编码},
    elocation-id = {2023.07.15.549154},
    year    = {2023},
    doi     = {10.1101/2023.07.15.549154},
    publisher = {Cold Spring Harbor Laboratory},
    URL     = {https://www.biorxiv.org/content/early/2023/07/29/2023.07.15.549154},
    eprint  = {https://www.biorxiv.org/content/early/2023/07/29/2023.07.15.549154.full.pdf},
    journal = {bioRxiv}
}
@article{Bondarenko2023QuantizableTR,
    title   = {可量化的转换器:通过帮助注意力头什么都不做来消除异常值},
    author  = {Yelysei Bondarenko and Markus Nagel and Tijmen Blankevoort},
    journal = {ArXiv},
    year    = {2023},
    volume  = {abs/2306.12929},
    url     = {https://api.semanticscholar.org/CorpusID:259224568}
}
@inproceedings{Arora2023ZoologyMA,
    title   = {动物学:测量和改进高效语言模型的召回率},
    author  = {Simran Arora and Sabri Eyuboglu and Aman Timalsina and Isys Johnson and Michael Poli and James Zou and Atri Rudra and Christopher R'e},
    year    = {2023},
    url     = {https://api.semanticscholar.org/CorpusID:266149332}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号