为什么TensorFlow推荐"functional style for constructing operations"?

Why does TensorFlow recommends the "functional style for constructing operations"?

本文关键字:constructing operations for functional TensorFlow 推荐 为什么 style      更新时间:2023-10-16

在Tensorflow的文档中,可以找到以下文本:

// Not recommended
MatMul m(scope, a, b);
// Recommended
auto m = MatMul(scope, a, b);

我看到使用"推荐"样式没有明显的好处。第一个版本至少很短。另外,"推荐"版本可能包括与不必要的作业操作有关的更多操作。

我已经阅读了该文档页面不少于六次,但仍然无法获得其推理背后的理由。

此建议只是时尚问题还是第二版本可能有一些好处?

"推荐"版本还可能包括与不必要的作业操作有关的更多操作。

没有作业。这是初始化。并且原则上可能存在的任何额外对象都完全在任何值得使用的编译器中。

您所引用的建议与Herb Sutter的"几乎总是自动"建议内联。最有利于这种风格的最有力的观点(在全面披露,我不遵循的情况下(是,这使得不可能留下可变的非直接化。

auto foo; // ill-formed.
int foo; // indeterminate value
auto foo = int(); // a zero integer

授予的,一个良好的静态分析工具也可以警告,但这仍然是一个非常强的观点,不需要编译器或外部工具的其他分析。

除此之外,风格上的论点是,它还使您的代码与您使用auto进行理智的情况一致,例如

auto it = myVec.begin();

但所有计数。它最终将是一种风格的选择,无论选择哪种样式,这两种样式都存在。