使用特征张量fft

Using eigen tensor fft

本文关键字:fft 张量 特征      更新时间:2023-10-16

我曾研究过使用特征张量fft模块为tensorflow实现CPU fft。Benoit Steiner就如何在这里使用它提供了一些建议。

特征fft使用相应张量的模板化类型来执行其计算。不幸的是,从OpKernelContext中提取的输入被声明为const,因为输入是不可变的。因此,我最终遇到了一堆无法分配常量变量的编译器错误(因为TensorFFTOp在内部重用了模板化的typename)。

解决这个问题的最佳方法是什么?一些想法:

  • 使用mutable_input,但这似乎只是为了解决问题而弯曲API
  • std::remove_const修改TensorFFTOp,以便在内部使用非const变量
  • 显式实例化TensorFFTOp,而不是使用TensorBase.h中定义的模板成员函数

最后一个选项似乎是最简单的,但我很难把所有的模板参数都做好。有什么建议吗?

在同事的帮助下,我们通过简单地将const输入数组转换为非const输入数组来获得所需的行为。

typename TTypes<T, 2>::Tensor& casted_input = *reinterpret_cast<typename TTypes<T, 2>::Tensor*>(&input);
auto result = casted_input.template fft<Eigen::BothParts, Eigen::FFT_FORWARD>(dims);