2016-07-13 3 views
0

내가 bazel C에 새로 온 ++ 및tensorflow에서 conv_ops와 같은 연산을 만드는 방법은 무엇입니까?

을 할 노력하고있어 나는 tensorflow의 컨볼 루션 연산에 대한 몇 가지 변화를 만들고 싶어 무엇 , 그래서 난 내 첫 번째 단계는 단지 작전을 만들 것을 결정 그것처럼. 나는 내가 conv_ops.cc를 복사 // tensorflow/코어/커널에서 내 new_conv_ops.cc에 내 등록 작전의 이름을 변경

했을 무엇

. 또한 중복을 피하기 위해 파일의 일부 함수 이름을 변경했습니다. 그리고 여기에 내 BUILD가 있습니다 file.

당신이 볼 수 있듯이, 나는 conv_ops의 deps 속성을 // tensorflow/core/kernels/BUILD에서 복사합니다. 그런 다음 "bazel build -c opt //tensorflow/core/user_ops:new_conv_ops.so"를 사용하여 새 op를 빌드합니다.

내 문제가

그럼 내가 bounds_check을 삭제하려고이 error.

을 가지고, 다음 deps에 대한 동일한 오류가 발생했습니다 무엇입니까. 그렇다면 // tensorflow/core/user_ops에있는 // tensorflow/core/kernels에 h 파일을 포함하는 것에 약간의 문제가 있다는 것을 알고 있습니다. 그렇다면 어떻게 conv_ops와 같은 새로운 op를 완벽하게 만들 수 있습니까?

답변

0

TensorFlow에 사용자 지정 작업을 추가하는 방법은 here 자습서에서 다룹니다. 실제 코드 examples을 볼 수도 있습니다.

특정 문제를 해결하려면 tf_custom_op_library 매크로가 필요한 종속성의 대부분을 대상에 추가합니다. 다음과 같이 간단히 작성할 수 있습니다.

tf_custom_op_library(
    name="new_conv_ops.so", 
    srcs=["new_conv_ops.cc"] 
) 
+0

답장을 보내 주셔서 감사합니다. 그러나 위와 같이 BUILD 파일을 단순히 작성하면 "다음 규칙에 포함 된 다음 파일에 대한 종속성 선언이 누락되었습니다"라는 오류가 발생하고 BUILD 파일에 포함 된 파일이 언급됩니다. 나는 온라인에서 몇 가지 검색을 수행했으며 // tensorflow/core의 BUILD 파일에서 user_ops_op_lib의 cc_library 정의를 찾았습니다. 라이브러리의 deps 속성에 필요한 파일을 추가했지만 작동하지 않았습니다. 그래서 아마도 내 .so 파일의 BUILD에서 종속성을 정의해야한다고 생각합니다. –

+0

나는 또한 위에서 언급 한 실제 코드 예제를 읽었지만 // tensorflow/core/kernels 등의 h 파일의 종속성에는 관여하지 않습니다. 따라서 더 복잡한 예제가 있는지 궁금합니다. 그냥 op.h와 op_kernel.h) –

+0

안녕하세요, 나는 새로운 op를 추가하는 동안 비슷한 문제에 직면하고있다. 이 문제를 해결할 수 있었습니까? 나는 이것에 도움을받는 것이 기쁘다. –

관련 문제