mindflow.cell.SNO3D

View Source On Gitee
class mindflow.cell.SNO3D(in_channels, out_channels, hidden_channels=64, num_sno_layers=3, data_format='channels_first', transforms=None, kernel_size=5, activation='gelu', compute_dtype=mstype.float32)[source]

The 3D SNO, which contains a lifting layer (encoder), multiple spectral transform layers and a projection layer (decoder). See documentation for base class, mindflow.cell.SNO.

Examples

>>> import numpy as np
>>> from mindspore import Tensor
>>> import mindspore.common.dtype as mstype
>>> from mindflow.cell import SNO3D
>>> grid_size, grid_size_z, modes = 64, 40, 12
>>> matr = Tensor(np.random.rand(modes, grid_size), mstype.float32)
>>> inv_matr = Tensor(np.random.rand(grid_size, modes), mstype.float32)
>>> matr_1 = Tensor(np.random.rand(modes, grid_size_z), mstype.float32)
>>> inv_matr_1 = Tensor(np.random.rand(grid_size_z, modes), mstype.float32)
>>> net = SNO3D(in_channels=10, out_channels=1,
>>>             transforms=[[matr, inv_matr]] * 2 + [[matr_1, inv_matr_1]])
>>> x = Tensor(np.random.rand(10, 10, resolution, resolution, grid_size_z), mstype.float32)
>>> y = net(x)
>>> print(x.shape, y.shape)
(10, 10, 64, 64, 40) (10, 1, 64, 64, 40)