使用本征张量 fft
Using eigen tensor fft
我看过使用特征 tensor fft module. Benoit Steiner offered some advice on how to use it here.
为张量流实现 CPU fft
本征 fft 使用相应张量的模板化类型来执行其计算。不幸的是,从 OpKernelContext
中提取的 inputs 被声明为 const
,因为输入是不可变的。因此,我最终遇到了一堆无法分配 const 变量的编译器错误(因为 TensorFFTOp
在内部重用了模板化的类型名)。
解决此问题的最佳方法是什么?一些想法:
- 使用
mutable_input
但这似乎只是为了解决问题而弯曲 API
- 将
TensorFFTOp
修改为 std::remove_const
以便在内部使用非 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);
我看过使用特征 tensor fft module. Benoit Steiner offered some advice on how to use it here.
为张量流实现 CPU fft本征 fft 使用相应张量的模板化类型来执行其计算。不幸的是,从 OpKernelContext
中提取的 inputs 被声明为 const
,因为输入是不可变的。因此,我最终遇到了一堆无法分配 const 变量的编译器错误(因为 TensorFFTOp
在内部重用了模板化的类型名)。
解决此问题的最佳方法是什么?一些想法:
- 使用
mutable_input
但这似乎只是为了解决问题而弯曲 API - 将
TensorFFTOp
修改为std::remove_const
以便在内部使用非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);