DFT¶
DFT - 20¶
版本¶
- 名称: DFT (GitHub) 
- 域: - main
- 始于版本: - 20
- 函数: - False
- 支持级别: - SupportType.COMMON
- 形状推断: - True
此版本的操作符自版本 20起可用。
摘要¶
计算输入的离散傅里叶变换 (DFT)。
假设输入形状为 [M, N],其中 N 是计算 DFT 的维度,M 表示概念上的“所有其他维度”,形状为 [M, N] 的 DFT y[m, k] 定义为
逆变换定义为
其中 \(j\) 是虚数单位。
输出的实际形状在“输出”部分指定。
属性¶
- inverse - INT (默认为 - '0')- 是否执行离散傅里叶逆变换。默认为 0,对应于 - false。
- onesided - INT (默认为 - '0')- 如果 - onesided为- 1且输入为实数,则只返回- [0, 1, 2, ..., floor(n_fft/2) + 1]中的- k值,因为实数到复数的傅里叶变换满足共轭对称性,即- X[m, k] = X[m, n_fft-k]*,其中- m表示未应用 DFT 的“所有其他维度”。如果输入张量是复数,则不支持单边输出。值可以是- 0或- 1。默认为- 0。
输入¶
介于 1 到 3 个输入之间。
- input (异构) - T1 - 对于实数输入,期望的形状为: - [signal_dim0][signal_dim1][signal_dim2]...[signal_dimN][1]。对于复数输入,期望的形状为:- [signal_dim0][signal_dim1][signal_dim2]...[signal_dimN][2]。最后一个维度表示值的实部和虚部,按此顺序。
- dft_length (可选, 异构) - T2 - 信号的长度作为标量。如果大于轴维度,信号将补零至 - dft_length。如果小于轴维度,则只使用前- dft_length个值作为信号。
- axis (可选, 异构) - tensor(int64) - 执行 DFT 的轴作为标量。默认为 - -2(最后一个信号轴)。负值表示从后往前计数维度。接受的范围是 \([-r, -2] \cup [0, r-2]\),其中- r = rank(input)。最后一个维度用于表示复数,因此是无效轴。
输出¶
- output (异构) - T1 - 输入向量的傅里叶变换。如果 - onesided为- 0,期望的形状为:- [signal_dim0][signal_dim1][signal_dim2]...[signal_dimN][2]。如果- axis=0且- onesided为- 1,期望的形状为:- [floor(signal_dim0/2)+1][signal_dim1][signal_dim2]...[signal_dimN][2]。如果- axis=1且- onesided为- 1,期望的形状为:- [signal_dim0][floor(signal_dim1/2)+1][signal_dim2]...[signal_dimN][2]。如果- axis=N且- onesided为- 1,期望的形状为:- [signal_dim0][signal_dim1][signal_dim2]...[floor(signal_dimN/2)+1][2]。指定- axis处的- signal_dim等于- dft_length。
类型约束¶
- T1 在 ( - tensor(bfloat16),- tensor(double),- tensor(float),- tensor(float16))- 将输入和输出类型限制为浮点张量。 
- T2 包含 ( - tensor(int32),- tensor(int64))- 将标量长度类型限制为整数。 
DFT - 17¶
版本¶
- 名称: DFT (GitHub) 
- 域: - main
- 起始版本: - 17
- 函数: - False
- 支持级别: - SupportType.COMMON
- 形状推断: - True
此版本的运算符自 版本 17 起可用。
摘要¶
计算输入的离散傅里叶变换。
属性¶
- 轴 - INT(默认值为 - '1')- 执行 DFT 的轴。默认情况下,此值设置为 1,对应于批次索引后的第一个维度。负值表示从后往前计数维度。接受的范围是 \([-r, -2] \cup [0, r-2]\),其中 - r = rank(input)。最后一个维度用于表示复数,因此是无效轴。
- inverse - INT (默认为 - '0')- 是否执行离散傅里叶逆变换。默认情况下,此值设置为 0,对应于 false。 
- onesided - INT (默认为 - '0')- 如果 onesided 为 1,则只返回 [0, 1, 2, …, floor(n_fft/2) + 1] 中的 w 值,因为实数到复数的傅里叶变换满足共轭对称性,即 X[m, w] = X[m, n_fft-w]*。请注意,如果输入或窗口张量是复数,则不支持单边输出。对于实数输入启用 onesided 会执行实值快速傅里叶变换 (RFFT)。当使用实数或复数输入调用时,默认值为 0。值可以是 0 或 1。 
输入¶
1 到 2 个输入之间。
- input (异构) - T1 - 对于实数输入,期望的形状为: [batch_idx][signal_dim1][signal_dim2]…[signal_dimN][1]。对于复数输入,期望的形状为: [batch_idx][signal_dim1][signal_dim2]…[signal_dimN][2]。第一个维度是批次维度。接下来的 N 个维度对应于信号的维度。最后一个维度表示值的实部和虚部,按此顺序。 
- dft_length (可选, 异构) - T2 - 信号的长度作为标量。如果大于轴维度,信号将补零至 dft_length。如果小于轴维度,则只使用前 dft_length 个值作为信号。这是一个可选值。 
输出¶
- output (异构) - T1 - 输入向量的傅里叶变换。如果 onesided 为 0,期望的形状为: [batch_idx][signal_dim1][signal_dim2]…[signal_dimN][2]。如果 axis=1 且 onesided 为 1,期望的形状为: [batch_idx][floor(signal_dim1/2)+1][signal_dim2]…[signal_dimN][2]。如果 axis=2 且 onesided 为 1,期望的形状为: [batch_idx][signal_dim1][floor(signal_dim2/2)+1]…[signal_dimN][2]。如果 axis=N 且 onesided 为 1,期望的形状为: [batch_idx][signal_dim1][signal_dim2]…[floor(signal_dimN/2)+1][2]。指定轴处的 signal_dim 等于 dft_length。 
类型约束¶
- T1 在 ( - tensor(bfloat16),- tensor(double),- tensor(float),- tensor(float16))- 将输入和输出类型限制为浮点张量。 
- T2 包含 ( - tensor(int32),- tensor(int64))- 将标量长度类型限制为 int64_t。