文档反馈

问题文档片段

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

提交类型
issue

有点复杂...

找人问问吧。

PR

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

一键搞定!

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

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

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

- 英文中包含中文字符。

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

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

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

易用性

- 易用性:

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

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

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

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

正确性

- 正确性:

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

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

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

- 代码片段错误。

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

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

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

风险提示

- 风险提示:

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

内容合规

- 内容合规:

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

- 内容侵权。

请选择问题类型

问题描述

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

mindflow.cell.PeRCNN

查看源文件
class mindflow.cell.PeRCNN(dim, in_channels, hidden_channels, kernel_size, dt, nu, laplace_kernel=None, conv_layers_num=3, padding='periodic', compute_dtype=ms.float32)[源代码]

物理编码循环卷积神经网络(PeRCNN),对给定的物理结构进行强制编码,实现稀疏数据上的时空演化的学习。PeRCNN可以应用于关于PDE系统的各种问题,包括正向和反向分析、数据驱动建模和PDE的发现。 更多信息可参考论文 Encoding physics to learn reaction–diffusion processes 。 在本网络中,lazy_inline用于编译阶段的加速,但当前其仅在昇腾后端生效。 PeRCNN目前支持带两个物理结构的输入。当输入形状不同时,用户需要手动增加或移除相关的参数和pi_blocks。

参数:
  • dim (int) - 输入的物理维度,二维输入的shape长度为4,三维为5,数据遵循 "NCHW""NCDHW" 格式。

  • in_channels (int) - 输入空间的通道数。

  • hidden_channels (int) - 并行卷积层中的输出空间的通道数。

  • kernel_size (int) - 并行卷积层中的卷积核参数。

  • dt (Union[int, float]) - PeRCNN的时间步。

  • nu (Union[int, float]) - 扩散项的系数。

  • laplace_kernel (mindspore.Tensor) - 三维下,设置核的shape为 (kernel_size[0],kernel_size[1],kernel_size[2]) ,则shape为 (Cout,Cin,kernel_size[0],kernel_size[1],kernel_size[1]) 。二维下,shape向量为 (N,Cin/groups,kernel_size[0],kernel_size[1]) ,则核的shape为 (kernel_size[0],kernel_size[1])

  • conv_layers_num (int) - 并行卷积层的数量。默认值: 3

  • padding (str) - 边界填充,当前仅支持周期填充。默认值: periodic

  • compute_dtype (dtype.Number) - PeRCNN的数据类型。默认值: mindspore.float32 。支持以下数据类型: mindspore.float32mindspore.float16。GPU后端建议使用float32,Ascend后端建议使用float16。

输入:
  • x (Tensor) - 三维下的shape为 (batch_size,channels,depth,height,width) ,二维下的shape为 (batch_size,channels,height,width)

输出:

Tensor,与输入的shape一致。

异常:
  • TypeError - 如果 dimin_channelshidden_channelskernel_size 不是int。

  • TypeError - 如果 dtnu 既不是int也不是float。

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> import mindspore as ms
>>> from mindflow.cell import PeRCNN
>>> laplace_3d = [[[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0],
...                 [0.0, 0.0, -0.08333333333333333, 0.0, 0.0],
...                 [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]],
...                 [[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0],
...                 [0.0, 0.0, 1.3333333333333333, 0.0, 0.0],
...                 [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]],
...                 [[0.0, 0.0, -0.08333333333333333, 0.0, 0.0],
...                 [0.0, 0.0, 1.3333333333333333, 0.0, 0.0],
...                 [-0.08333333333333333, 1.3333333333333333, -7.5, 1.3333333333333333, -0.08333333333333333],
...                 [0.0, 0.0, 1.3333333333333333, 0.0, 0.0],
...                 [0.0, 0.0, -0.08333333333333333, 0.0, 0.0]],
...                 [[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0],
...                 [0.0, 0.0, 1.3333333333333333, 0.0, 0.0],
...                 [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]],
...                 [[0.0, 0.0, 0.0, 0.0, 0.0],
...                 [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, -0.08333333333333333, 0.0, 0.0],
...                 [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]]]]]
>>> laplace = np.array(laplace_3d)
>>> grid_size = 48
>>> field = 100
>>> dx_3d = field / grid_size
>>> laplace_3d_kernel = ms.Tensor(1 / dx_3d**2 * laplace, dtype=ms.float32)
>>> rcnn_ms = PeRCNN(
...     dim=3,
...     in_channels=2,
...     hidden_channels=2,
...     kernel_size=1,
...     dt=0.5,
...     nu=0.274,
...     laplace_kernel=laplace_3d_kernel,
...     conv_layers_num=3,
...     compute_dtype=ms.float32,
...   )
>>> input = np.random.randn(1, 2, 48, 48, 48)
>>> input = ms.Tensor(input, ms.float32)
>>> output = rcnn_ms(input)
>>> print(output.shape)
(1, 2, 48, 48, 48)