使用 Eigen Tensor FFT

3
我查看了使用eigen tensor fft module 实现tensorflow CPU fft的方法。Benoit Steiner在这里 给出了一些建议。
eigen fft使用对应张量的模板类型来执行计算。不幸的是,从OpKernelContext中提取的输入被声明为const,因为输入是不可变的。因此,我遇到了一堆编译器错误,指出不能将const变量赋值(因为TensorFFTOp在内部重用了模板类型名称)。
如何解决这个问题?以下是一些想法:
  • 使用mutable_input,但这似乎是为了解决问题而弯曲API的方式
  • 使用std::remove_const修改TensorFFTOp,以便在内部使用非const变量
  • 显式实例化TensorFFTOp,而不是使用在TensorBase.h中定义的模板成员函数

最后一种选择似乎是最直接的,但我在正确获取所有模板参数方面遇到了困难。有什么建议吗?

1个回答

2

在同事的帮助下,我们通过将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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接