将TensorFlow转换为ONNX:RFFT或FFT的当前实现仅允许ComplexAbs作为消费者而不是“Imag”、“Real”}

3okqufwl  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(276)

我正在尝试将此TensorFlow model转换为onnx。但我得到一个错误消息:

> python -m tf2onnx.convert --saved-model .\spice --output model.onnx --opset 11 --verbose
...
2023-04-08 18:33:10,811 - ERROR - tf2onnx.tfonnx: Tensorflow op [Real: Real] is not supported
2023-04-08 18:33:10,812 - ERROR - tf2onnx.tfonnx: Tensorflow op [Imag: Imag] is not supported
2023-04-08 18:33:10,879 - ERROR - tf2onnx.tfonnx: Unsupported ops: Counter({'Real': 6, 'Imag': 6})
...
ValueError: make_sure failure: Current implementation of RFFT or FFT only allows ComplexAbs as consumer not {'Real', 'Imag'}

TensorFlow Light(tflight)模型也是如此:

> python -m tf2onnx.convert --opset 16 --tflite .\lite-model_spice_1.tflite --output spice.onnx
...
ValueError: make_sure failure: Current implementation of RFFT or FFT only allows ComplexAbs as consumer not {'Imag', 'Real'}

我使用的是Windows 11,Python 3。10.10,TensorFlow 2.12
这是我第一次尝试使用TensorFlow / ONNX,所以我不确定错误来自哪里。

问题

  • 它与TensorFlow、tf 2 onnx或模型有关吗?
  • 它能在另一个设置下工作吗(可能在Linux或其他TF版本上)?
  • 如何解决此问题?
w8f9ii69

w8f9ii691#

1.发生上述错误是因为tf2onnx不支持真实的和Imag操作。有关可以与tf2onnx一起使用的操作列表,请参阅this link。这也会影响TensorFlow模型。
1.我不知道这是什么意思,但据我所知,它与第二点所指的没有任何关系。
1.解决此问题的方法是通过更改真实的和Imag操作,如下所示:

# Compute the real and imaginary components using tf.math.real and tf.math.imag
x_real = tf.math.real(x)
x_imag = tf.math.imag(x)

相关问题