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

TensorFlow和Keras中的符号张量是什么?,tensorflow,keras,terminology,definition,tensor,Tensorflow,Keras,Terminology,Definition,Tensor,TensorFlow和Keras中的符号张量是什么?它们与其他张量有何不同?他们为什么会存在?他们在TensorFlow和Keras的什么地方出现的?我们应该如何处理这些问题,或者在处理这些问题时会遇到什么问题 在过去,我曾经遇到过一些与符号张量相关的问题,比如\u SymbolicException,但是文档中没有描述这个概念。这个问题也有被问到的地方,但是,在这篇文章中,我把重点放在这个特定的问题上,以便以后可以将答案用作参考。根据,符号张量与其他张量的不同之处在于,它们并不具体包含值 让我

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

在过去,我曾经遇到过一些与符号张量相关的问题,比如
\u SymbolicException
,但是文档中没有描述这个概念。这个问题也有被问到的地方,但是,在这篇文章中,我把重点放在这个特定的问题上,以便以后可以将答案用作参考。

根据,符号张量与其他张量的不同之处在于,它们并不具体包含值

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

>>> a = tf.Variable(5, name="a")
>>> b = tf.Variable(7, name="b")
>>> c = (b**2 - a**3)**5
>>> print(c)
结果如下:

tf.Tensor(1759441920, shape=(), dtype=int32)
对于以上内容,值以tf.Variable格式专门定义,输出为张量格式。然而,张量必须包含一个值才能被认为是这样

符号张量的不同之处在于,不需要显式值来定义张量,这对于使用TensorFlow 2.0构建神经网络具有一定的意义,TensorFlow 2.0现在使用Keras作为默认API

以下是一个序列神经网络的示例,用于建立预测酒店取消事件的分类模型(如果感兴趣,请填写Jupyter笔记本):

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


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

您说“这是一个符号定义的模型”。这和符号张量有什么关系?是的,这似乎很明显,但我想要一个准确的答案。当然。符号张量不需要一个预定义的值,因此可以包含一系列的值。因此,一个符号定义的模型是一个根据定义,张量是符号的模型。如果张量不是符号,那么在没有明确定义输入变量值的情况下,就不可能运行神经网络。我还有两个(或三个)问题。1.有没有一种方法可以通过编程来理解张量是否是符号的(类似于Python中获取变量类型的
type(my_var)
)?2.我已经阅读了您链接到的博客文章,其中提到符号张量是在使用顺序和函数API构建模型时出现的。符号张量还会出现吗?3.TF的占位符呢?占位符与符号张量有何不同,或者为什么符号张量不称为占位符。根据tensorflow.org网站,“张量是一个操作输出之一的符号句柄。它不保存该操作输出的值,而是提供一种在tensorflow tf.compat.v1.Session中计算这些值的方法。”这不仅仅是符号与非符号的对比——张量的目的首先是提供一个评估操作的框架。2.是的,但所描述的情况将是最常见的情况之一。3.占位符与急切执行不兼容,因此两者不能互换。
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'))