Я использую bazel для создания своего собственного кода tenorflow c ++. В настоящее время я застрял в написании модульных тестов, потому что тесты проходят для каждого теста, который я написал, независимо от ожидаемых значений. Например, я проверяю размеры тензора, который должен быть 4, но если я скажу, что ожидаемое значение равно 5, оно все равно проходит. И это поведение - правда для каждого теста, который я написал.
Я чувствую, что это проблема с файлом bazel BUILD, который я написал, или, возможно, даже с тензорным потоком. В настоящее время я использую cc_library для некоторых вспомогательных функций. И tf_cc_test для модульного теста. Я также использовал tf_cc_binary и cc_binary для вспомогательных функций, но затем я получаю неопределенную ошибку ссылки для одной функции, которая была объявлена в заголовочном файле и определена в исходном файле.
Это макет моих папок и файлов:
dl_super_resolution
|
|-src
| |-dl_model_helper.cpp
|
|-include
| |-dl_model_helper.h
|
|-test
| |-dl_model_helper_unit_test.cpp
#include в dl_model_helper.cpp и dl_model_helper_unit_test.cpp выглядит следующим образом:
#include <dl_model_helper.h>
Вот как выглядит файл BUILD:
load("@org_tensorflow//tensorflow:tensorflow.bzl", "tf_cc_test")
cc_library(
name = "dl_super_resolution_lib",
srcs = [
"src/dl_model_helper.cpp",
"src/dummy.cpp",
],
hdrs = ["include/dl_model_helper.h"],
data = glob(["images/**"]),
includes = [
"include",
"src",
],
strip_include_prefix = "include",
visibility = ["//visibility:public"],
deps = [
"@org_tensorflow//tensorflow:libtensorflow_cc.so",
"@org_tensorflow//tensorflow/cc:cc_ops",
"@org_tensorflow//tensorflow/cc:client_session",
"@org_tensorflow//tensorflow/core:framework",
"@org_tensorflow//tensorflow/core:tensorflow",
],
)
tf_cc_test(
name = "dl_super_resolution_tests",
srcs = glob(["test/*.cpp"]),
deps = [
":dl_super_resolution_lib",
"@googletest//:gtest_main",
],
)
Я ожидаю, что модульные тесты потерпят неудачу, если они действительно должны провалиться Пока что это всегда проходит. Если потребуется дополнительная информация, я также могу поделиться своим хранилищем.