TensorFlow 类占位符,以及其他定义输入张量的方法

Posted

技术标签:

【中文标题】TensorFlow 类占位符,以及其他定义输入张量的方法【英文标题】:TensorFlow class Placeholder, and other ways to define input tensor 【发布时间】:2019-10-05 21:11:38 【问题描述】:

尝试将 TensorFlow 程序从 Python 转换为 C++,在最新的文档 1.12 和 1.3 中没有发现此类占位符。翻到网上发现,从 1.7 版本开始,Placeholder 类就从官方文档中消失了。尽管如此,该类仍在 TensorFlow library v1.12 v1.13 中,我正在使用它。

在 1.0 版中找到占位符 (array_ops)http://docs1.w3cub.com/tensorflow~cpp/class/tensorflow/ops/placeholder

在 1.4 版中仍然存在 (array_ops)http://docs2.w3cub.com/tensorflow~cpp/class/tensorflow/ops/placeholder

在 1.6 版中仍然存在 (array_ops)http://htmlpreview.github.io/?https://github.com/tensorflow/docs/blob/r1.6/site/en/api_docs/cc/namespace/tensorflow/ops.html

在 1.7+ 版本中没有更多内容http://htmlpreview.github.io/?https://github.com/tensorflow/docs/blob/r1.7/site/en/api_docs/cc/namespace/tensorflow/ops.html

在最新版本 1.13 中也找不到https://www.tensorflow.org/api_docs/cc/group/array-ops

但是这个 Placeholder 类又回到了 2.0 版本https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/placeholder

这是我在 C++ 中使用占位符的方式:

Scope R = Scope::NewRootScope();
Placeholder X = Placeholder(R,DT_FLOAT);

上面的占位符应该用什么替换,还有其他方式来指定X吗?

【问题讨论】:

【参考方案1】:

Placeholder 类在 TensorFlow 1.7 到 1.13 中没有记录,但是,它仍然在 TensorFlow 库和标头中。更重要的是,它仍然存在,在 TensorFlow 2.0 中,如问题所述:https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/placeholder

这里还有另一种创建提要张量的方法:https://***.com/a/51834143/5581893

但是,为了将馈送张量(输入、预期)与其他张量层区分开来,使用 Placeholder 类是最好的选择。

【讨论】:

以上是关于TensorFlow 类占位符,以及其他定义输入张量的方法的主要内容,如果未能解决你的问题,请参考以下文章

Keras 输入层和 TensorFlow 占位符之间的区别

训练后用占位符交换 TensorFlow 数据集输入管道

Tensorflow:用 tf.Variable 替换/提供图形的占位符?

尝试填充占位符时出现Tensorflow错误

如何更改输入标签占位符的语言?

对于烧瓶,我如何设置自定义输入的值,但不能获取占位符?