当前位置: 首页 > news >正文

pc网站开发如何进行主题网站的资源建设

pc网站开发,如何进行主题网站的资源建设,深圳专业做网站服务,大一期末网页设计作业AlphaFold3 rigid_utils 模块Rotation类的 map_tensor_fn方法主要作用是对旋转矩阵或四元数上的最后一维应用一个函数 (fn) ,并返回一个新的 Rotation 对象。 源代码: def map_tensor_fn(self, fn: Callable[torch.Tensor, torch.Tensor]) -> Rotati…

AlphaFold3 rigid_utils 模块Rotation类的 map_tensor_fn方法主要作用是对旋转矩阵或四元数上的最后一维应用一个函数 (fn) ,并返回一个新的 Rotation 对象。

源代码:

    def map_tensor_fn(self, fn: Callable[torch.Tensor, torch.Tensor]) -> Rotation:"""Apply a Tensor -> Tensor function to underlying rotation tensors,mapping over the rotation dimension(s). Can be used e.g. to sum outa one-hot batch dimension.Args:fn:A Tensor -> Tensor function to be mapped over the Rotation Returns:The transformed Rotation object""" if(self._rot_mats is not None):rot_mats = self._rot_mats.view(self._rot_mats.shape[:-2] + (9,))rot_mats = torch.stack(list(map(fn, torch.unbind(rot_mats, dim=-1))), dim=-1)rot_mats = rot_mats.view(rot_mats.shape[:-1] + (3, 3))return Rotation(rot_mats=rot_mats, quats=None)elif(self._quats is not None):quats = torch.stack(list(map(fn, torch.unbind(self._quats, dim=-1))), dim=-1)return Rotation(rot_mats=None, quats=quats, normalize_quats=False)else:raise ValueError("Both rotations are None")

代码解读:

方法签名
def map_tensor_fn(self, fn: Callable[torch.Tensor, torch.Tensor]) -> Rotation:
  • fn:接收一个 Tensor,返回一个 Tensor,典型用途是对旋转的某个维度做变换,比如求和、加权平均等。

  • 返回值:一个新的 Rotation 对象,里面装着变换后的旋转矩阵 (rot_mats) 或四元数 (quats)。

处理旋转矩阵 (_rot_mats)

如果 self._rot_mats 存在,就走这条分支:

if self._rot_mats is not None:# 把 (batch_size, ..., 3, 3) reshape 成 (batch_size, ..., 9)rot_mats = self._rot_mats.view(self._rot_mats.shape[:-2] + (9,))

✅ 解释
view() 是为了把 3x3 的旋转矩阵摊平成 9 维向量,方便对最后一维应用函数。

rot_mats = torch.stack(list(map(fn, torch.unbind(rot_mats, dim=-1))), dim=-1
)

✅ 解释

  1. torch.unbind():沿最后一维解开成 9 个独立的张量。

  2. map(fn, ...):对每个解开的张量应用 fn

  3. torch.stack():把变换后的 9 个张量重新堆叠回去。

注: torch.unbind 维度 -1 ,torch.stack 维度 +1, 并且都处理相同的维度(-1)。

rot_mats = rot_mats.view(rot_mats.shape[:-1] + (3, 3))
return Rotation(rot_mats=rot_mats, quats=None)

✅ 解释
把 9 维向量重新 reshaped 成 (3, 3) 矩阵,并用它创建一个新的 Rotation 对象。

处理四元数 (_quats)

如果矩阵不存在,走四元数分支:

elif self._quats is not None:quats = torch.stack(list(map(fn, torch.unbind(self._quats, dim=-1))), dim=-1)return Rotation(rot_mats=None, quats=quats, normalize_quats=False)

✅ 解释

  • 逻辑和矩阵类似,先 unbind() 分解四元数的最后一维,对每个部分应用 fn(),再 stack() 堆叠回来。

  • 创建新 Rotation 对象时加了 normalize_quats=False,说明这一步不需要再归一化。

 防错处理

如果两个旋转表示都没有,抛出异常:

else:raise ValueError("Both rotations are None")

总结

map_tensor_fn() 是一种 高阶函数,它能灵活地对旋转矩阵或四元数的最后一维执行各种操作(比如求和、加权、归一化、剪裁等)。

核心逻辑:

  • 矩阵路径 → reshape(9维) → 分解 → 应用函数 → 堆叠 → 恢复3x3

  • 四元数路径 → 分解 → 应用函数 → 堆叠

http://www.dtcms.com/a/599526.html

相关文章:

  • 嵌入式Linux:线程同步(读写锁)
  • 秦都区建设局网站网站建设陕西
  • 大庆企业做网站wordpress拖拽编辑插件
  • 关键字挖掘机爱站网免费推广途径与原因
  • 站长工具箱东台网站制作
  • 建设单位经常去哪个网站哪些网站有二维码
  • 国外室内设计网站大全网站上海开公司
  • 牛商网建设的食品网站谷歌aso优化
  • 怎样为网站设计关键词使用织梦系统建设网站教程
  • 网站布局方法分类wordpress个人博客主题
  • 能赚钱的网站怎么做制作企业网站的方法
  • 宁波建网站价格怎么用div做网站
  • mui做的h5网站案例wordpress上传ppt
  • 学做ppt的网站网站建设维护及使用管理办法
  • 东莞网站建设牛魔网a切图做网站过时了吗
  • 自建网站做外贸有什么国外的设计网站推荐
  • 免费的行情网站app网络推广服务平台
  • 郴州网站小程序我要下载中国建设网站
  • 下载搭建网站软件下载如何制作手机购物网站
  • 男女做暖暖的网站大全信息发布网站有哪些
  • 双语教学示范课程建设项目网站凡客优品
  • 郑州网站优化平台微信小程序开发公司排名
  • 沧州市网站肇庆网站推广排名
  • 企业信用信息查询公示系统天津天津seo管理平台
  • 怎么自己制作网站平台室内设计效果图报价
  • seo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技硬件开发管理流程
  • 海口网站建设推广中英文网站是怎么做的
  • 网站标题关键词怎么做公众号搭建
  • 网站 pingheiwordpress页面和分类目录
  • 四川省城乡住房和城乡建设厅网站重庆云阳网站建设