c++ - 为什么TensorFlow推荐“构造操作的函数式”?
问题描述
在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();
但是YMMV在所有方面。它最终将成为一种风格选择,无论选择哪种风格,两种风格都存在例外。
推荐阅读
- mysql - 如何将两个不同表中的插入数据连接到同一行
- ruby-on-rails - 使用 cequel 直接调用查询时出现 ArgumentError
- java - Spring @Import 值是没有 @Configuration 的普通类
- sprite-kit - 有没有办法将物理体限制在常规 n 边形内?
- elasticsearch - 在 Ubuntu 服务器上部署 Elasticsearch
- javascript - 有没有办法分析 PostgreSQL 查询以确保结果仅包含单个表中的列?
- java - DTO 中的动态字段类型
- deno - 创建 Deno https 服务器
- python - 如何将保存的模型转换为 tflite 文件?
- python-3.x - CNN Pytorch(FashionMNIST)中的train loss和test loss一样高