Spaces:
Running
Running
# Copyright (c) ONNX Project Contributors | |
# | |
# SPDX-License-Identifier: Apache-2.0 | |
import numpy as np | |
import onnx | |
from onnx.backend.test.case.base import Base | |
from onnx.backend.test.case.node import expect | |
class DFT(Base): | |
def export_opset19() -> None: | |
node = onnx.helper.make_node("DFT", inputs=["x"], outputs=["y"], axis=1) | |
x = np.arange(0, 100).reshape(10, 10).astype(np.float32) | |
y = np.fft.fft(x, axis=0) | |
x = x.reshape(1, 10, 10, 1) | |
y = np.stack((y.real, y.imag), axis=2).astype(np.float32).reshape(1, 10, 10, 2) | |
expect( | |
node, | |
inputs=[x], | |
outputs=[y], | |
name="test_dft_opset19", | |
opset_imports=[onnx.helper.make_opsetid("", 19)], | |
) | |
node = onnx.helper.make_node("DFT", inputs=["x"], outputs=["y"], axis=2) | |
x = np.arange(0, 100).reshape(10, 10).astype(np.float32) | |
y = np.fft.fft(x, axis=1) | |
x = x.reshape(1, 10, 10, 1) | |
y = np.stack((y.real, y.imag), axis=2).astype(np.float32).reshape(1, 10, 10, 2) | |
expect( | |
node, | |
inputs=[x], | |
outputs=[y], | |
name="test_dft_axis_opset19", | |
opset_imports=[onnx.helper.make_opsetid("", 19)], | |
) | |
node = onnx.helper.make_node( | |
"DFT", inputs=["x"], outputs=["y"], inverse=1, axis=1 | |
) | |
x = np.arange(0, 100, dtype=np.complex64).reshape( | |
10, | |
10, | |
) | |
y = np.fft.ifft(x, axis=0) | |
x = np.stack((x.real, x.imag), axis=2).astype(np.float32).reshape(1, 10, 10, 2) | |
y = np.stack((y.real, y.imag), axis=2).astype(np.float32).reshape(1, 10, 10, 2) | |
expect( | |
node, | |
inputs=[x], | |
outputs=[y], | |
name="test_dft_inverse_opset19", | |
opset_imports=[onnx.helper.make_opsetid("", 19)], | |
) | |
def export() -> None: | |
node = onnx.helper.make_node("DFT", inputs=["x", "", "axis"], outputs=["y"]) | |
x = np.arange(0, 100).reshape(10, 10).astype(np.float32) | |
axis = np.array(1, dtype=np.int64) | |
y = np.fft.fft(x, axis=0) | |
x = x.reshape(1, 10, 10, 1) | |
y = np.stack((y.real, y.imag), axis=2).astype(np.float32).reshape(1, 10, 10, 2) | |
expect(node, inputs=[x, axis], outputs=[y], name="test_dft") | |
node = onnx.helper.make_node("DFT", inputs=["x", "", "axis"], outputs=["y"]) | |
x = np.arange(0, 100).reshape(10, 10).astype(np.float32) | |
axis = np.array(2, dtype=np.int64) | |
y = np.fft.fft(x, axis=1) | |
x = x.reshape(1, 10, 10, 1) | |
y = np.stack((y.real, y.imag), axis=2).astype(np.float32).reshape(1, 10, 10, 2) | |
expect(node, inputs=[x, axis], outputs=[y], name="test_dft_axis") | |
node = onnx.helper.make_node( | |
"DFT", inputs=["x", "", "axis"], outputs=["y"], inverse=1 | |
) | |
x = np.arange(0, 100, dtype=np.complex64).reshape(10, 10) | |
axis = np.array(1, dtype=np.int64) | |
y = np.fft.ifft(x, axis=0) | |
x = np.stack((x.real, x.imag), axis=2).astype(np.float32).reshape(1, 10, 10, 2) | |
y = np.stack((y.real, y.imag), axis=2).astype(np.float32).reshape(1, 10, 10, 2) | |
expect(node, inputs=[x, axis], outputs=[y], name="test_dft_inverse") | |