2017-01-15 5 views
1

고유 번호 tensor fft module을 사용하여 tensorflow 용 CPU fft를 구현했습니다. Benoit Steiner는 그것을 사용하는 방법에 대한 조언을했습니다. here.고유 텐서 fft 사용

고유 fft는 해당하는 텐서의 템플리트 형식을 사용하여 계산을 수행합니다. 불행히도 OpKernelContext에서 추출한 inputs은 입력이 불변이므로 const으로 선언됩니다. 따라서 const 변수를 할당 할 수없는 많은 컴파일러 오류가 발생합니다 (TensorFFTOp은 템플릿이있는 typename을 내부적으로 다시 사용하기 때문에).

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 일부의 생각 : std::remove_const 같은 비 const 변수는 내부적으로 사용되는

  • 명시 적으로 TensorFFTOp을 오히려 인스턴스화
  • 가 함께 TensorFFTOp을 수정

    • mutable_input 사용하지만 그것은 단지 문제를 해결하기 위해 API를 굽힘 것 같아 TensorBase.h에 정의 된 템플릿 멤버 함수를 사용하는 것보다

    마지막 옵션이 가장 단순한 것처럼 보이지만 나는 힘들다. 모든 템플릿 인수를 올바르게 얻었습니다. 어떤 제안?

  • 답변

    0

    동료의 도움을 받아 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);