Я пытаюсь внести свой вклад в код Tensorflow, добавив неинверсные гиперболические функции (sinh и cosh), как указано в [номеру 7531] (https://github.com/tensorflow/tensorflow/issues/7531).Eigen functor uneclared при создании Tensorflow
Когда я протестировать сборку с помощью команды
$ bazel test --config opt //tensorflow/core/kernels:cwise_ops_test
Но я получаю ошибку:
> ...
> 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.
Полный выход можно увидеть here.
То, что я сделал, добавить эти два шаблона в 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
и cwise_op_cosh.cc
, которые являются всего лишь копиями негиперболических версий со ссылками на грех или соза заменен зп и cosh соответственно. Насколько я вижу, гиперболические функции теперь реализованы точно так же, как и другие математические функции из библиотеки Eigen. Но насколько я вижу ошибку, она дает ссылки на отсутствующие объявления в источнике Eigen.
Это мой первый вклад с открытым исходным кодом, и, кроме того, я довольно новичок в C++. То, что я сделал неправильно, может быть очевидным с большим опытом C++.