在构建Tensorflow时,Eigen仿函数未声明

时间:2017-02-18 11:04:54

标签: c++ tensorflow bazel

我试图通过添加非反双曲函数(sinh和cosh)来为Tensorflow代码做出贡献,如[issue#7531]所述 (https://github.com/tensorflow/tensorflow/issues/7531)。

当我使用命令

测试构建时
datetime

但我收到错误:

$ bazel test --config opt //tensorflow/core/kernels:cwise_ops_test

可以看到完整输出here

我所做的是在> ... > external/eigen_archive/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h:1446:3: > note: 'sinh' should be declared prior to the call site or in an > associated namespace of one of its arguments T sinh(const T &x) { ^ > 1 error generated. Target //tensorflow/core/kernels:cwise_ops_test > failed to build Use --verbose_failures to see the command lines of > failed build steps. INFO: Elapsed time: 6.106s, Critical Path: 5.78s > > Executed 0 out of 1 test: 1 fails to build. 中添加这两个模板:

cwise_ops.h

并创建了两个新文件template <typename T> struct acos : base<T, Eigen::internal::scalar_acos_op<T> > {}; template <typename T> struct atan : base<T, Eigen::internal::scalar_atan_op<T> > {}; // The following two templates are new: template <typename T> struct sinh : base<T, Eigen::internal::scalar_sinh_op<T> > {}; template <typename T> struct cosh : base<T, Eigen::internal::scalar_cosh_op<T> > {}; cwise_op_sinh.cc,它们只是非双曲线版本的副本,分别用sinh和cosh替换sin或cos。据我所知,双曲线函数现在的实现与Eigen库中的其他数学函数完全相同。但据我所知,它给出了引用特征源中缺少声明的错误。

这是我的第一个开源贡献,除此之外我还是C ++的新手。我做错了可能会有更多的C ++经验。

2 个答案:

答案 0 :(得分:0)

您是否将`cwise_op_sinh.cc'和'cwise_op_cosh.cc'添加到相应的BUILD文件中?快速搜索告诉我它应该是here但我可能是错的。你必须告诉Bazel你的新文件。

答案 1 :(得分:0)

这应该是对OP问题的评论,但我缺乏必要的业力。

--config opt标志似乎错了,您的意思是-c opt用于优化构建吗? --config opt表示使用&#34; opt&#34;来自bazelrc文件的配置,假设你在bazelrc文件中有像&#34; build:opt --flag1 = value1&#34;和类似的。如果你不这样做,那么Bazel应该显示一条警告:

WARNING: Config values are not defined in any .rc file: "opt"

或者这种效果。