Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 为什么在Android NDK中加载冻结模型时没有注册ops? 我想使用NDK和CGub来使用C++ TysFraceAPI,我可以创建库,但是当我加载一个冻结模型时,当我尝试加载图:时,会出现很多错误。_Tensorflow_Android Ndk - Fatal编程技术网

Tensorflow 为什么在Android NDK中加载冻结模型时没有注册ops? 我想使用NDK和CGub来使用C++ TysFraceAPI,我可以创建库,但是当我加载一个冻结模型时,当我尝试加载图:时,会出现很多错误。

Tensorflow 为什么在Android NDK中加载冻结模型时没有注册ops? 我想使用NDK和CGub来使用C++ TysFraceAPI,我可以创建库,但是当我加载一个冻结模型时,当我尝试加载图:时,会出现很多错误。,tensorflow,android-ndk,Tensorflow,Android Ndk,E/native:op_kernel.cc:1148 OpKernel('op:'PopulationCount' 设备类型:“CPU”约束{name:“T”允许的{u值列表{ 未知op:PopulationCount的类型:DT_INT32}}') 因此,我知道我的库不支持这些操作。 我是否需要添加另一个库来支持这些操作 我的Cmake脚本基于此和 我使用该脚本为armeabi-v7a构建依赖项 这就是我的cmake脚本的外观: cmake_minimum_required(VERSION 3

E/native:op_kernel.cc:1148 OpKernel('op:'PopulationCount' 设备类型:“CPU”约束{name:“T”允许的{u值列表{ 未知op:PopulationCount的类型:DT_INT32}}')

因此,我知道我的库不支持这些操作。 我是否需要添加另一个库来支持这些操作

我的Cmake脚本基于此和 我使用该脚本为armeabi-v7a构建依赖项

这就是我的cmake脚本的外观:

cmake_minimum_required(VERSION 3.4.1)
include(ExternalProject)
SET(PROJECT_NAME tf_native_lib)
SET(OpenCV_FOUND true )
SET(PREBUILT_DIR ${TENSORFLOW_ROOT_DIR}/tensorflow/contrib/makefile/gen)
SET(TARGET_NSYNC_LIB ${TENSORFLOW_ROOT_DIR}/tensorflow/contrib/makefile    /downloads/nsync/builds/${ANDROID_ABI}.android.c++11)
FIND_PACKAGE(OpenCV REQUIRED)

add_library( # Sets the name of the library.
             ${PROJECT_NAME}
             SHARED
             src/main/cpp/native-lib.h
             src/main/cpp/native-lib.cpp
             src/main/cpp/TensorflowInferenceHandler.h
             src/main/cpp/TensorflowInferenceHandler.cpp
             )

add_library(lib_proto STATIC IMPORTED )
set_target_properties(lib_proto PROPERTIES IMPORTED_LOCATION
${PREBUILT_DIR}/protobuf_android/${ANDROID_ABI}/lib/libprotobuf.a)

add_library(lib_nsync STATIC IMPORTED )
set_target_properties(lib_nsync PROPERTIES IMPORTED_LOCATION
   ${TARGET_NSYNC_LIB}/libnsync.a)

add_library(lib_tf STATIC IMPORTED )
set_target_properties(lib_tf PROPERTIES IMPORTED_LOCATION
${PREBUILT_DIR}/lib/android_${ANDROID_ABI}/libtensorflow-core.a)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIS_SLIM_BUILD \
                      -std=c++11 -fno-rtti -fno-exceptions \
                      -O2 -Wno-narrowing -fomit-frame-pointer \
                      -mfpu=neon -mfloat-abi=softfp -fPIE -fPIC \
                      -ftemplate-depth=900 \
                      -DGOOGLE_PROTOBUF_NO_RTTI \
                      -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER")

 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} \
                               -Wl,--allow-multiple-definition \
                               -Wl,--whole-archive \
                               -fPIE -pie -v")



# MESSAGE("tensorflow lib dir ${TENSORFLOW_LIB_DIR}")

target_link_libraries( # Specifies the target library.
                       ${PROJECT_NAME}
                       ${OpenCV_LIBS}
                       android
                       dl
                       log
                       m
                       z
                       jnigraphics
                       lib_tf
                       lib_proto
                       lib_nsync)

include_directories(
                   ${OPENCV_INCLUDE_DIRS}
                   ${PREBUILT_DIR}/proto
                   ${PREBUILT_DIR}/protobuf_android/${ANDROID_ABI}/include
                   ${PREBUILT_DIR}/nsync/public
                   ${TENSORFLOW_ROOT_DIR}/tensorflow/contrib/makefile/downloads/eigen
                   ${TENSORFLOW_ROOT_DIR}/bazel-tensorflow/external/nsync/public
                   ${TENSORFLOW_ROOT_DIR}/bazel-genfiles
                   ${TENSORFLOW_ROOT_DIR}
                   ../../../cpp_utils)
如果这是不可能的,那么将tensorflow_推断与我的Jni源链接起来的源在哪里

提前谢谢


Unai.

tensorflow/core/Ops/bitwise_Ops.cc
中声明了
人口计数和其他一些操作。将该文件添加到
/tensorflow/contrib/makefile/tf_op_files.txt
的末尾。然后重新编译
Tensorflow
。这对我来说很有用。

你能弄明白吗?如果有,请告诉我好吗?谢谢,解决了。见下面的答案。