alphaFold2 | 补充Evoformer之outer productor mean
补充 outer AlphaFold2 Mean
2023-06-13 09:13:13 时间
<<AlphaFold2专题>>
alphaFold2 | 模型细节之Evoformer(四)
- 文章转自微信公众号:机器学习炼丹术
- 作者:陈亦新(欢迎交流共同进步) 补充一下下图这个结构的计算过程:
class OuterMean(nn.Module):
def __init__(
self,
dim,
hidden_dim = None,
eps = 1e-5
):
super().__init__()
self.eps = eps
self.norm = nn.LayerNorm(dim)
hidden_dim = default(hidden_dim, dim)
self.left_proj = nn.Linear(dim, hidden_dim)
self.right_proj = nn.Linear(dim, hidden_dim)
self.proj_out = nn.Linear(hidden_dim, dim)
def forward(self, x, mask = None):
x = self.norm(x)
left = self.left_proj(x)
right = self.right_proj(x)
outer = rearrange(left, 'b m i d -> b m i () d') * rearrange(right, 'b m j d -> b m () j d')
if exists(mask):
# masked mean, if there are padding in the rows of the MSA
mask = rearrange(mask, 'b m i -> b m i () ()') * rearrange(mask, 'b m j -> b m () j ()')
outer = outer.masked_fill(~mask, 0.)
outer = outer.mean(dim = 1) / (mask.sum(dim = 1) + self.eps)
else:
outer = outer.mean(dim = 1)
return self.proj_out(outer)
上面代码是一个矩阵的操作,我们可以将其具体到单个元素来看
这张图中,左边msa特征中,画出来的分别是第i个氨基酸和第j个氨基酸的特征。这两个特征分别是(s,c)的形状,s表示msa特征的氨基酸序列数,c是特征数量。而右边pair特征当中,第i个氨基酸和第j个氨基酸构成的对的特征,其实就是
长度的一维特征。
通过这样的方式,实现了从msa特征当中更新pair特征的方式。
相关文章
- 机器人方向专业课程在不同层次院校差异性简述-含ROS1/ROS2-补充篇
- 异步解决方案补充
- 转录组分析学习笔记(持续补充)
- 待补充说明
- 测试环境没有上游系统的数据,测不了怎么办 ?(补充版)
- 【Flutter】Flutter 开发环境搭建 ( 2021年08月25日 补充最新资料 | 最新安装教程 )
- Android侧滑删除另一种实现,SwipeListView补充详解手机开发
- C++ STL学习之容器set和multiset (补充材料)详解编程语言
- 异常(补充)详解编程语言
- 关闭Oracle,补充日志已记录(oracle关闭补充日志)
- 如何系统化补充Redis知识缺失(如何查漏补缺redis)
- 科学家补充证明水果中的金合欢醇可预防和逆转帕金森病相关的脑损伤
- JScript中的"this"关键字使用方式补充材料