2016-12-18 6 views
6

저는 TensorFlow에서 작업 중이며 각 Python 함수와 SWIG 인터페이스 뒤에있는 해당 C++ 함수 간의 관계를 알고 싶습니다. 즉, TensorFlow 응용 프로그램의 모든 Python 코드 행에서 어떤 C++ 함수가 호출되는지 정확히 알 수 있기를 원합니다.SWIG 인터페이스, TensorFlow 뒤에 C++ 함수 호출을 보는 방법

이미 파이썬 코드 here을 디버깅하는 방법을 보았고 세그먼트 화 오류가 발생하는 코드 줄을 표시하는 방법은 here이지만 오류가있는 곳만 볼 수 있습니다. 코드에 버그가 없더라도 모든 C++ 함수 호출을 알 수 있어야합니다 (gdb로 디버깅하는 동안 시스템 호출과 동적 라이브러리 호출을 볼 수 있지만 C++ 함수 호출은 볼 수 없습니다).

당신에게

+0

은 Windows 또는 Linux에서 지원됩니까? – Flexo

+0

우분투 14.04입니다. TensorFlow 버전은 0.10.0rc0입니다. – CTF

답변

1

대부분의 사람들이 그래프 건설을위한 작성하는 코드의 대부분을 감사드립니다. 거의 모든 그래프 구조는 파이썬에서 완전하게 발생합니다. 이는 OperationGraph과 같이 (파이썬) 데이터 구조를 간단히 구축하여 ops.py에 정의됩니다. 한 가지 예외는 모양 추론입니다.이 추론은 모든 작업을 만들 때 발생합니다. 모양 유추는 cpp_shape_inference.i에 정의 된 인터페이스를 통해 C++에 호출합니다. 계산 그래프를 작성한 후에 으로 실행하고 Session을 작성하고 sess.run을 호출하십시오. 이것들은 모두 TensorFlow의 C API를 감싸는 파이썬 함수입니다. 래퍼는 tf_session.i에서 찾을 수 있습니다.

+0

안녕하세요 keveman! 전용 하드웨어 가속기를 사용하여 일부 연산의 실행 속도를 높이려면 어떤 C++ 함수가 호출되는지 알고 싶습니다. 예를 들어, TensorFlow 애플리케이션 계산 시간의 병목 현상이 신경망 (신경망 최적화 도구가 루프에서 여러 번 호출되는 곳)의 학습이라는 것을 알게 된 순간, 정확히 어떤 C++ 기능을 알 수없는 시점입니다 파이썬 함수의 뒤에서 호출됩니다 (TF C++ API를 철저히 검색하여 추측 할 수 있습니다). gdb로 디버깅 시스템 호출과 동적 라이브러리 호출 만 볼 수 있습니다. – CTF