TensorFlow 和 Keras 中的符号张量是什么?

nbr*_*bro 11 terminology definition keras tensorflow tensor

TensorFlow 和 Keras中的符号张量是什么?它们与其他张量有何不同?它们为什么会存在?它们在 TensorFlow 和 Keras 中出现在哪里?我们应该如何处理它们,或者在处理它们时会面临哪些问题?

过去,我遇到过一些与符号张量相关的问题,例如_SymbolicException,但文档没有描述这个概念。还有另一篇文章也提出了这个问题,但是,在这篇文章中,我专注于这个特定问题,以便以后可以将答案用作参考。

Mic*_*gan 8

根据blog.tensorflow.org符号张量与其他张量的不同之处在于它们不专门保存值。

让我们考虑一个简单的例子。

>>> a = tf.Variable(5, name="a")
>>> b = tf.Variable(7, name="b")
>>> c = (b**2 - a**3)**5
>>> print(c)
Run Code Online (Sandbox Code Playgroud)

输出如下:

tf.Tensor(1759441920, shape=(), dtype=int32)
Run Code Online (Sandbox Code Playgroud)

对于上面的值,具体定义为tf.Variable格式,输出为 Tensor 格式。但是,张量必须包含一个值才能被视为这样。

符号张量的不同之处在于不需要明确的值来定义张量,这对使用 TensorFlow 2.0 构建神经网络有影响,TensorFlow 2.0 现在使用Keras作为默认 API。

这是一个序列神经网络的示例,用于构建用于预测酒店取消发生率的分类模型(如果有兴趣,请在此处查看完整的 Jupyter Notebook ):

from tensorflow.keras import models
from tensorflow.keras import layers

model = models.Sequential()
model.add(layers.Dense(8, activation='relu', input_shape=(4,)))
model.add(layers.Dense(1, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)

这是一个符号定义的模型,因为网络中没有明确定义任何值。而是为网络要读取的输入变量创建一个框架,然后生成预测。

在这方面,Keras 变得非常流行,因为它允许使用符号张量构建图形,同时保持命令式布局。

  • 你说“这是一个符号定义的模型”。这与符号张量有何关系?是的,这似乎是显而易见的,但我想要一个准确的答案。 (3认同)