sponge.core.RunOneStepCell

查看源文件
class sponge.core.RunOneStepCell(energy: WithEnergyCell = None, force: WithForceCell = None, optimizer: Optimizer = None, steps: int = 1, sens: float = 1.0, **kwargs)[源代码]

运行一步模拟的神经网络层。这一层包裹了 energyforceoptimizer 。在construct函数里将会生成一张反向图来更新仿真系统的原子坐标。

参数:
  • energy (sponge.core.WithEnergyCell) - 包含了有势能函数的模拟系统的神经网络层。默认值: None。该神经网络层用于计算并返回系统在当前坐标处的势能值。

  • force (sponge.core.WithForceCell) - 包含了有原子力函数的模拟系统的神经网络层。默认值: None。该神经网络层用于计算并返回系统在当前坐标处的力值。

  • optimizer (mindspore.nn.Optimizer, 可选) - 模拟的优化器。默认值: None

  • steps (int, 可选) - 模拟的步数。默认值: 1

  • sens (float, 可选) - 作为反向传播的输入要填充的缩放数。默认值: 1.0

  • kwargs (dict) - 关键字参数。

输入:
输出:
  • energy (Tensor) - 能量。shape为 \((B, 1)\) 。数据类型为float。这里的B是batch size。

  • force (Tensor) - 原子力。shape为 \((B, A, D)\) 。数据类型为float。这里的 \(B\) 是batch size, \(A\) 是原子数量, \(D\) 是空间维度,通常为3。

支持平台:

Ascend GPU

样例:

>>> from sponge import WithEnergyCell, RunOneStepCell, Sponge
>>> from sponge.system import Molecule
>>> from sponge.potential.forcefield import ForceField
>>> from sponge.optimizer import Updater
>>> system = Molecule(template='water.tip3p.yaml')
>>> potential = ForceField(system, parameters='SPCE')
>>> optimizer = Updater(system, controller=None, time_step=1e-3)
>>> sys_with_ene = WithEnergyCell(system, potential)
>>> one_step = RunOneStepCell(sys_with_ene, optimizer=optimizer)
md = Sponge(one_step)
property bias

整个偏置势的Tensor。

返回:

Tensor,shape为 (B, 1) ,数据类型为float。

property bias_function

偏置势函数的网络层。

返回:

Cell,偏置势函数。

property bias_names

偏置势能的名字。

返回:

list[str],偏置势能的名字列表。

property biases

偏置势的组成部分的Tensor。

返回:

Tensor,shape为 (B, V) ,数据类型为float。

property energies

势能组成部分的Tensor。

返回:

Tensor,shape为 (B, U) ,数据类型为float。

property energy_cutoff

WithEnergyCell 中邻居列表的截断距离。

返回:

Tensor, WithEnergyCell 中邻居列表的截断距离。

property energy_names

能量项的名字。

返回:

list[str],能量项的名字列表。

property energy_unit

能量单位。

返回:

str,能量单位。

property force_cutoff

WithForceCell 中邻居列表的截断距离。

返回:

Tensor, WithForceCell 中邻居列表的截断距离。

property length_unit

长度单位。

返回:

str,长度单位。

property neighbour_list_pace

更新邻居列表所需的step。

返回:

int,更新邻居列表所需的step数。

property num_biases

偏置势能 \(V\) 的数量。

返回:

int,偏置势能的数量。

property num_energies

能量项 \(U\) 的数量。

返回:

int,能量项的数量。

set_pbc_grad(value: bool)[源代码]

设定是否计算周期性边界条件箱的梯度。

参数:
  • value (bool) - 用于判断是否计算周期性边界条件箱的梯度的标志符。

set_steps(steps: int)[源代码]

设置JIT的步数。

参数:
  • steps (int) - JIT的步数。

update_bias(step: int)[源代码]

更新偏置势。

参数:
  • step (int) - 更新偏置势的仿真step。

update_modifier(step: int)[源代码]

更新力修饰器。

参数:
  • step (int) - 更新力修饰器的仿真step。

update_neighbour_list()[源代码]

更新邻居列表。

update_wrapper(step: int)[源代码]

更新能量包。

参数:
  • step (int) - 更新能量包的仿真step。