文档反馈

问题文档片段

问题文档片段包含公式时,显示为空格。

提交类型
issue

有点复杂...

找人问问吧。

PR

小问题,全程线上修改...

一键搞定!

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

- 错别字或拼写错误,标点符号使用错误、公式错误或显示异常。

- 链接错误、空单元格、格式错误。

- 英文中包含中文字符。

- 界面和描述不一致,但不影响操作。

- 表述不通顺,但不影响理解。

- 版本号不匹配:如软件包名称、界面版本号。

易用性

- 易用性:

- 关键步骤错误或缺失,无法指导用户完成任务。

- 缺少主要功能描述、关键词解释、必要前提条件、注意事项等。

- 描述内容存在歧义指代不明、上下文矛盾。

- 逻辑不清晰,该分类、分项、分步骤的没有给出。

正确性

- 正确性:

- 技术原理、功能、支持平台、参数类型、异常报错等描述和软件实现不一致。

- 原理图、架构图等存在错误。

- 命令、命令参数等错误。

- 代码片段错误。

- 命令无法完成对应功能。

- 界面错误,无法指导操作。

- 代码样例运行报错、运行结果不符。

风险提示

- 风险提示:

- 对重要数据或系统存在风险的操作,缺少安全提示。

内容合规

- 内容合规:

- 违反法律法规,涉及政治、领土主权等敏感词。

- 内容侵权。

请选择问题类型

问题描述

点击输入详细问题描述,以帮助我们快速定位问题。

sponge.optimizer.Updater

查看源文件
class sponge.optimizer.Updater(system: Molecule, controller: Union[Controller, List[Controller]] = None, time_step: float = 0.001, velocity: Union[Tensor, ndarray, List[float]] = None, weight_decay: float = 0.0, loss_scale: float = 1.0, **kwargs)[源代码]

MindSPONGE更新器的基类。是MindSpore中 Optimizer 的特殊子类。 Updater 更新仿真系统中的原子坐标。原子坐标的更新要求原子受力和原子速度。力是从外界传递而来,速度是 Updater 自己的参数。 当使用周期性边界条件的时候, Updater 也能够通过仿真系统的维里更新周期性边界条件箱的尺寸。 在通过一系列的 Controller 的仿真模拟中, Updater 控制着七个变量的值,分别是:坐标、速度、力、能量、动力学、维里和周期性边界条件箱。如果传入超过一个 Controller ,它们将按照队列顺序进行工作。

参数:
  • system (Molecule) - 模拟系统。

  • controller (Union[Controller, List[Controller]]) - 控制器或控制器列表来控制模拟系统中的七个变量(坐标、速度、力、能量、动力学、维里和周期性边界条件箱)。默认值: None

  • time_step (float) - 单步时间。默认值: 1e-3

  • velocity (Union[Tensor, ndarray, List[float]]) - 原子速度的array,shape为 (A,D)(B,A,D) ,数据类型为float。默认值: None

  • weight_decay (float) - 权重衰减值。默认值: 0.0

  • loss_scale (float) - 梯度缩放系数。默认值: 1.0

  • kwargs (dict) - 其他参数。

输入:
  • energy (Tensor) - 系统的能量。 shape为 (B, A, D) 的Tensor。数据类型为float。

  • force (Tensor) - 系统的力。 shape为 (B, A, D) 的Tensor。数据类型为float。

  • virial (Tensor) - 系统的维里。 shape为 (B, A, D) 的Tensor。数据类型为float。默认值:”None”。

输出:

bool,是否成功完成当前优化单步并且移动到下一步。

说明

  • B - Batch size。

  • A - 原子总数。

  • D - 模拟系统的维度,一般为3。

支持平台:

Ascend GPU

property boltzmann

当前单位下的布尔兹曼常数。

返回:

float,当前单位下的布尔兹曼常数。

decay_and_scale_grad(force: Tensor, virial: Tensor = None)[源代码]

对力和维里进行权重衰减和梯度标度。

参数:
  • force (Tensor) - 力的Tensor,数据类型为float。

  • virial (Tensor) - 维里的Tensor,数据类型为float。默认值:”None”。

返回:
  • Tensor,权重衰减和梯度标度之后的力。

  • Tensor,权重衰减和梯度标度之后的维里。如果pbc_box是None,输出维里与输入保持一致。

get_dt()[源代码]

获取当前单步的学习率。

返回:

float。当前单步的学习率。

get_kinetics(velocity: Tensor)[源代码]

获取动力学。

参数:
  • velocity (Tensor) - 原子速度的Tensor,数据类型为float。

返回:

Tensor,系统中的动力学。

get_pressure(kinetics: Tensor, virial: Tensor, pbc_box: Tensor)[源代码]

获得压力。

参数:
  • kinetics (Tensor) - 动力学的Tensor,数据类型为float。默认值:”None”。

  • virial (Tensor) - 维里的Tensor,数据类型为float。默认值:”None”。

  • pbc_box (Tensor) - 周期性边界条件箱的Tensor,数据类型为float。默认值:”None”。

返回:

Tensor,系统的压力。

get_temperature(kinetics: Tensor = None)[源代码]

获取温度。

参数:
  • kinetics (Tensor) - 动力学的Tensor,数据类型为float。默认值:”None”。

返回:

Tensor,系统的温度。

get_velocity()[源代码]

获取速度。

返回:

Tensor,系统中原子的速度。

next_step(success: bool = True)[源代码]

完成当前优化step并且进行到下一个step。

参数:
  • success (bool) - 是否完成当前优化step并且移动到下一步。默认值: True

返回:

bool,是否成功完成当前优化step并且移动到下一步。

property press_unit_scale

压力的参考值。

返回:

float,压力的参考值。

set_degrees_of_freedom(dofs: int)[源代码]

设置系统的自由度。

参数:
  • dofs (int) - 自由度。

set_step(step: int = 0)[源代码]

设置系统的当前步数。

参数:
  • step (int) - 系统的当前步数。默认值:0。

update_coordinate(coordinate: Tensor, success: bool = True)[源代码]

更新坐标的参数。

参数:
  • coordinate (Tensor) - 原子的位置坐标的Tensor。数据类型为float。

  • success (bool) - 判断是否更新坐标。默认值: True

返回:

bool,是否成功更新了坐标的参数。

update_kinetics(kinetics: Tensor, success: bool = True)[源代码]

更新动力学参数。

参数:
  • kinetics (Tensor) - 动力学的Tensor。数据类型为float。

  • success (bool) - 判断是否更新动力学参数。默认值: True

返回:

bool。是否成功更新了动力学参数。

update_pbc_box(pbc_box: Tensor, success: bool = True)[源代码]

更新周期性边界条件箱的参数。

参数:
  • pbc_box (Tensor) - 周期性边界条件box的Tensor。数据类型为float。

  • success (bool) - 判断是否更新周期性边界条件箱的参数。默认值: True

返回:

bool,是否成功更新了周期性边界条件箱的参数。

update_pressure(pressure: Tensor, success: bool = True)[源代码]

更新压力参数。

参数:
  • pressure (Tensor) - 压力的Tensor。数据类型为float。

  • success (bool) - 判断是否更新压力参数。默认值: True

返回:

bool。是否成功更新了压力参数。

update_temperature(temperature: Tensor, success: bool = True)[源代码]

更新温度参数。

参数:
  • temperature (Tensor) - 温度的Tensor。数据类型为float。

  • success (bool) - 判断是否更新温度参数。默认值: True

返回:

bool。是否成功更新了温度参数。

update_velocity(velocity: Tensor, success: bool = True)[源代码]

更新速度参数。

参数:
  • velocity (Tensor) - 原子速度的Tensor。数据类型为float。

  • success (bool) - 判断是否更新速度参数。默认值: True

返回:

bool,是否成功更新了速度参数。

update_virial(virial: Tensor, success: bool = True)[源代码]

更新维里参数。

参数:
  • virial (Tensor) - 维里的Tensor。数据类型为float。

  • success (bool) - 判断是否更新维里参数。默认值: True

返回:

bool。是否成功更新了维里参数。