| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> AlphaFold2代码阅读(一) -> 正文阅读 |
|
[人工智能]AlphaFold2代码阅读(一) |
2021SC@SDUSC 文章目录前言??AlphaFold2的代码真的是太多了,而且几乎没有注释,难度真的很大。因为我对深度学习的了解也并不深刻,并且TensorFlow这个框架也没有用过,所以在看代码的过程,真的是不停地在学习。总之一句话就是痛并快乐着。 一、各种import1、代码
2、解析1、导入了很多alphafold自己的模块 下面是各个模块的用途: ??residue_constants.py中写明了AlphaFold 中使用的常量 ??all_atom.py中写明了所有原子表示的操作 ??common_modules.py中写明了用于蛋白质折叠的常见俳句模块的集合 ??folding.py中写明了结构模块的模块和实用程序 ??layer_stack.py中写明了没有共享参数的堆叠层函数重复的函数 ??lddt.py中写明了lDDT 蛋白质距离评分 ??mapping.py中写明了专门的映射函数 ??prng.py中写明了关于蛋白质折叠中 PRNG 使用的实用程序集合 ??quat_affine.py中写明了四元数几何模块 ??utils.py中写明了一组用于蛋白质折叠的 JAX 实用函数 2、导入了很多库 Haiku: functools: ??functools是python的模块,用于高阶函数:指那些作用于函数或者返回其它函数的函数,通常只要是可以被当做函数调用的对象就是这个模块的目标。 ??cmp_to_key,将一个比较函数转换关键字函数; ??partial,针对函数起作用,并且是部分的; ??reduce,与python内置的reduce函数功能一样; ??total_ordering,在类装饰器中按照缺失顺序,填充方法; ??update_wrapper,更新一个包裹(wrapper)函数,使其看起来更像被包裹(wrapped)的函数; ??wraps,可用作一个装饰器,简化调用update_wrapper的过程; 二、softmax_cross_entropy函数1、代码
2、解析上述代码是在给定 logits 和 one-hot class 标签的情况下计算 softmax 交叉熵 ??softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。 ??交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。 ??有关softmax函数的详解,请见https://zhuanlan.zhihu.com/p/105722023 ??有关交叉熵的详解,请见https://blog.csdn.net/qq_33542428/article/details/106482393 三、sigmoid_cross_entropy函数1、代码
2、解析上述代码在给定 logits 和多个类标签的情况下计算 sigmoid 交叉熵 sigmoid函数表达式和图像如下: (1)值域在0和1之间 (2)函数具有非常好的对称性 (3)函数对输入超过一定范围就会不敏感 有关sigmoid函数的详解,请见https://www.jianshu.com/p/506595ec4b58 四、create_extra_msa_feature函数1、代码
2、解析将 extra_msa 扩展为 one_hot并与其他额外的 msa 功能连接。 五、AlphaFoldIteration类1.1、代码
1.2、解析 AlphaFoldIteration类: AlphaFoldIteration类的主要作用是实现了AlphaFold 架构的单次循环迭代 根据提供的特征计算集成(平均)表示。 然后将这些表示传递给配置文件请求的各个头。 每个头还返回一个损失,该损失作为加权和组合,以产生总损失。 2.1、代码
2.2、解析 计算每个批次元素和平均值的表示 3.1、代码
3.2、解析 MSA 表示没有集成,所以我们不将张量传递到循环中。 4.1、代码
4.2、解析 上述代码是对批处理维度上的表示(MSA 除外)求平均。 其中def body(x)后面是将一个元素添加到表示集合中去。 5.1、代码
5.2、解析 上述代码是初始化Haiku 模块时,运行while_循环的一次迭代来初始化“body”中使用的Haiku 模块。 6.1、代码
6.2、解析 跳过 PredictedLDDTHead 和 PredictedAlignedErrorHead 直到StructureModule 被执行。 结构模块用来自头部的额外表示为PredictedLDDTHead提供激活。 7.1、代码
7.2、解析 在 StructureModule 执行后添加 PredictedLDDTHead 提供所有以前的结果以访问 structure_module 结果。 8.1、代码
8.2、解析 在 StructureModule 执行后添加 PredictedAlignedErrorHead。 提供所有以前的结果以访问 structure_module 结果。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 10:42:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |