Passing tensorflow::ops::DecodeJpeg::Attrs to the tensorflow::ops::DecodeJpeg constructor causes std::logic_error

fdbelqdn  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(168)

系统信息

  • 是否编写了自定义代码(与在TensorFlow中使用的库存示例脚本相反):是的,这是自定义代码。然而,它是基于这个 article
  • OS平台和发行版:Ubuntu 20.04
  • 如果问题发生在移动设备上(例如iPhone 8、Pixel 2、三星Galaxy):无
  • 从哪里安装的TensorFlow(源代码或二进制文件):源代码
  • TensorFlow版本(使用以下命令):2.4
  • Python版本:3.8
  • Bazel版本(如果从源代码编译):3.1.0
  • GCC/编译器版本(如果从源代码编译):gcc-10
  • CUDA/cuDNN版本:CUDA 11.2(已安装但未使用)
  • GPU型号和内存:NVIDIA GeForce MX150
    描述当前行为

将tensorflow::ops::DecodeJpeg::Attrs传递给tensorflow::ops::DecodeJpeg构造函数会导致std::logic_error
控制台输出

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid
Aborted (core dumped)

描述预期行为

不会出现错误地退出。

独立代码以重现问题

tensorflow::Status ReadTensorFromImageFile(
    const std::string& file_name, const int input_height, const int input_width,
    const float input_mean, const float input_std,
    std::vector<tensorflow::Tensor>* out_tensors, bool writeGraph) {
  // build the graph
  tensorflow::Scope root = tensorflow::Scope::NewRootScope();
  tensorflow::ops::Placeholder input_file_name{root.WithOpName("input"),
                                               tensorflow::DataType::DT_STRING};
  tensorflow::ops::ReadFile file_reader{root.WithOpName("file_reader"),
                                        input_file_name};
  constexpr int kNumOfChannels = 3;
  tensorflow::ops::DecodeJpeg decode_file{
      root.WithOpName("decode_file"), file_reader,
      tensorflow::ops::DecodeJpeg::Channels(kNumOfChannels)};

只有在tensorflow::ops::DecodeJpeg::Attrs未使用时才不会退出并报错。

tensorflow::ops::DecodeJpeg decode_file{root.WithOpName("decode_file"), file_reader};

其他信息/日志

gdb回溯

[New Thread 0x7fffe8839700 (LWP 104836)]
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid

Thread 1 "tutorial_01" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) backtrace 
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007fffe8a2b859 in __GI_abort () at abort.c:79
#2  0x00007fffe8cb1951 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007fffe8cbd47c in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007fffe8cbd4e7 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007fffe8cbd799 in __cxa_throw () from /lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007fffe8cb425e in std::__throw_logic_error(char const*) () from /lib/x86_64-linux-gnu/libstdc++.so.6
#7  0x00007fffeb6b316c in void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag) ()
   from /usr/local/lib/libtensorflow_cc.so.2
#8  0x00007ffff5617b4c in tensorflow::SetAttrValue(absl::lts_2020_02_25::string_view, tensorflow::AttrValue*) () from /usr/local/lib/libtensorflow_cc.so.2
#9  0x00007ffff551fc13 in tensorflow::NodeDefBuilder::Attr(absl::lts_2020_02_25::string_view, absl::lts_2020_02_25::string_view) () from /usr/local/lib/libtensorflow_cc.so.2
#10 0x00007fffebceff2a in tensorflow::ops::DecodeJpeg::DecodeJpeg(tensorflow::Scope const&, tensorflow::Input, tensorflow::ops::DecodeJpeg::Attrs const&) ()
   from /usr/local/lib/libtensorflow_cc.so.2
#11 0x000055555555a095 in ReadTensorFromImageFile (file_name="../data/grace_hopper.jpg", input_height=299, input_width=299, input_mean=0, input_std=255, out_tensors=0x7fffffffd610, 
    writeGraph=true) at ../src/tutorial_01/tutorial_01.cpp:48
#12 0x0000555555559d11 in main (argc=2, argv=0x7fffffffd788) at ../src/tutorial_01/tutorial_01.cpp:22
b1payxdu

b1payxdu1#

你好,
感谢你打开这个问题。由于这个问题已经开放了很长时间,这个问题的代码/调试信息可能与当前代码库的状态不相关。
Tensorflow团队正在不断通过修复错误和添加新功能来改进框架。我们建议你尝试使用最新的TensorFlow version 和最新的兼容硬件配置,这可能会解决该问题。如果你仍然遇到问题,请创建一个新的GitHub问题,附上你的最新发现以及所有有助于我们调查的调试信息。
请按照 release notes 了解Tensorflow空间中最新发展的动态。

zengzsys

zengzsys2#

这个问题已经过期,因为它已经开放了7天,没有活动。如果没有进一步的活动发生,它将被关闭。谢谢。

相关问题