mindflow.cell.FNO2D
- class mindflow.cell.FNO2D(in_channels, out_channels, resolution, modes, channels=20, depths=4, mlp_ratio=4, compute_dtype=mstype.float32)[源代码]
二维傅里叶神经算子(FNO2D)包含一个提升层、多个傅里叶层和一个解码器层。 有关更多详细信息,请参考论文 Fourier Neural Operator for Parametric Partial Differential Equations 。
- 参数:
in_channels (int) - 输入中的通道数。
out_channels (int) - 输出中的通道数。
resolution (int) - 输入的分辨率。
modes (int) - 要保留的低频分量的数量。
channels (int) - 输入提升尺寸后的通道数。默认值:
20
。depths (int) - FNO层的数量。默认值:
4
。mlp_ratio (int) - 解码器层的通道数提升比率。默认值:
4
。compute_dtype (dtype.Number) - 密集的计算类型。默认值:
mindspore.common.dtype.float32
。支持以下数据类型:mindspore.common.dtype.float16
或mindspore.common.dtype.float32
。GPU后端建议使用float32,Ascend后端建议使用float16。
- 输入:
x (Tensor) - shape为 \((batch\_size, resolution, resolution, in\_channels)\) 的Tensor。
- 输出:
Tensor,此FNO网络的输出。
output (Tensor) - shape为 \((batch\_size, resolution, resolution, out\_channels)\) 的Tensor。
- 异常:
TypeError - 如果 in_channels 不是int。
TypeError - 如果 out_channels 不是int。
TypeError - 如果 resolution 不是int。
TypeError - 如果 modes 不是int。
ValueError - 如果 modes 小于1。
- 支持平台:
Ascend
GPU
样例:
>>> import numpy as np >>> from mindspore.common.initializer import initializer, Normal >>> from mindflow.cell.neural_operators import FNO2D >>> B, H, W, C = 32, 64, 64, 1 >>> input = initializer(Normal(), [B, H, W, C]) >>> net = FNO2D(in_channels=1, out_channels=1, resolution=64, modes=12) >>> output = net(input) >>> print(output.shape) (32, 64, 64, 1)