AF3 identity_trans函数解读

AlphaFold3 rigid_utils 模块的 identity_trans 函数的功能是生成带有批次维度的全零平移向量张量。

源代码:

复制代码
@lru_cache(maxsize=None)
def identity_trans(
    batch_dims: Tuple[int], 
    dtype: Optional[torch.dtype] = None,
    device: Optional[torch.device] = None, 
    requires_grad: bool = True,
) -> torch.Tensor:
    trans = torch.zeros(
        (*batch_dims, 3), 
        dtype=dtype, 
        device=device, 
        requires_grad=requires_grad
    )
    return trans

源码解读:

1. 函数定义
复制代码
def identity_trans(
    batch_dims: Tuple[int], 
    dtype: Optional[torch.dtype] = None,
    device: Optional[torch.device] = None, 
    requires_grad: bool = True,
) -> torch.Tensor:

✅ 参数解析:

  • batch_dims : 表示输入的批次维度,比如 (16,) 就创建 16 个零向量 (16, 3)。

  • dtype : 数据类型,float32, float64 之类的。

  • device : 张量在哪个设备上,cpu 或 cuda。

  • requires_grad : 是否需要梯度,默认为 True,适合训练场景。

👉 目标 :创建一个形状 [*, 3] 的零向量,代表初始平移向量 (0, 0, 0)。

2. 创建张量
复制代码
trans = torch.zeros(
    (*batch_dims, 3), 
    dtype=dtype, 
    device=device, 
    requires_grad=requires_grad
)

✅ 解析逐项看:

  • (*batch_dims, 3) :

    • batch_dims 展开成多个批次维度,比如 (16,) 展开后就是 16。

    • 3 是每个向量的长度,表示 (x, y, z) 三个方向的位移。

    • 最终形状类似 torch.Size([16, 3])。

  • dtype : 控制数据类型,比如 torch.float32。

  • device : 控制张量生成在哪个设备,比如 cuda:0。

  • requires_grad : 如果 True,这个张量就会参与梯度计算(适合训练用)。

3. 返回张量
复制代码
  return trans

最终返回 形状 [*, 3] 的全零平移向量张量。

4. 总结

identity_trans() 的核心功能:

✅ 生成初始位移向量 ------ 形状 [*, 3] 的零向量,代表 "不移动"。

✅ 支持多批次输入 ------ batch_dims 灵活扩展支持多维数据,比如 [(8, 4, 3)]。

✅ 缓存加速 ------ 重复调用相同参数时,不重复创建张量,直接用缓存结果。

✅ 支持梯度训练 ------ 默认开启 requires_grad=True,可以在训练时更新平移向量。

相关推荐
老鱼说AI几秒前
脉冲神经网络:神经网络发展历史背景
人工智能·深度学习·神经网络·机器学习·自然语言处理·学习方法
Spatial3Ddddd2 分钟前
数字孪生接IoT做仓储物流地基是什么
大数据·人工智能·物联网
用户6602676118795 分钟前
登录成功就能读取任意任务 ID 吗?给 SaaS 读写加上租户范围
python
用户76241175670520 分钟前
第十五章 数据分析
python·数据分析
frankzch23 分钟前
Claude 刷新量子电路最优:LLM 与评估器的进化循环怎么搭
人工智能·深度学习·机器学习·语言模型·量子计算
郝学胜_神的一滴23 分钟前
游戏设计:原型与开发 05:读懂动态层,理解玩家如何活在游戏世界
人工智能·程序员
用户66982954852926 分钟前
同一句话,粤语要贵 24%:我量了 236 对双语文档和 4 种写法
人工智能
阿屿30 分钟前
从零手搓 AI 伴侣:Java + 大模型 + 多模态的工程化踩坑实录
人工智能
const_qiu32 分钟前
第四章 07:4.7 本章小结
java·运维·服务器·人工智能
cubestudio34 分钟前
云原生分布式训练怎么调度才不浪费算力?CubeStudio 分布式训练与加速架构解析(CRD+Operator / gang 调度 / 亲和反亲和 / GPU 利用率 / 共享 GPU)
人工智能·云原生·gpu