请问有把两个实数组合成复数的操作算子么
****************************************************解答*****************************************************
当前mindspore是有对复数类型的支持的。但是可能使用起来不是特别方便。
1. 当前mindspore有提供一些复数运算所常用的api,如ops.Real, ops.Imag, ops.Conj可以得到复数的实部、虚部、共轭
2. 但我试过了,在shape不是(1)的情况,不能像numpy一样直接使用1j*real_num或者1j*complex_num。所以如果要由实数构造一个复数,可能还是得从numpy开始,得到一个numpy的复数,然后转化成Tensor。demo如下:
- import numpy as np
- import mindspore as ms
- from mindspore import Tensor
- shape = (2, 2)
- a = np.ones(shape) * 2.0
- b = np.ones(shape) * 3.0
- c = a + 1j * b
- c = Tensor(c, dtype=ms.complex64)
- print(c)
或者,首先得到一个相同shape的j矩阵,然后在运用复数之间的运算。demo如下:
- shape = (2, 2)
- a = np.ones(shape) * 2.0
- b = np.ones(shape) * 3.0
- a = Tensor(a, dtype=ms.complex64)
- b = Tensor(b, dtype=ms.complex64)
- jj = Tensor(1j * np.ones(shape), dtype=ms.complex64)
- c = a + b * jj
- print(c)