在文档的某些部分(例如,Dataset Iterators
此处)中有对的引用Stateful Objects
。它们究竟是什么?它们在图中起什么作用?
要澄清的是,在数据集文档中,有一个示例可以使用one_shot_iterator
,因为它是无状态的:
dataset = tf.data.Dataset.range(100)
iterator = dataset.make_one_shot_iterator()
是什么使迭代器无状态?
正如其他人提到的那样,有状态对象是持有状态的对象。
现在,以TensorFlow术语来说,状态是一些值或数据,该值或数据保存在对的不同调用之间tf.Session.run
。最常见和最基本的状态对象是变量。您可以调用run
一次以更新模型的参数(即变量),并且它们将在下一次调用时保持其分配的值run
。这与大多数操作不同。例如,如果您有一个加法运算,该运算需要两个张量并输出第三个张量,run
则不会保存它在一次调用中计算的输出值。实际上,即使您的图形仅包含具有恒定值的运算,每次调用时都会评估张量运算run
,即使结果始终相同。
但是,
当给变量赋值时,它将“粘”(顺便说一句,占用相应的内存,如果选择这样做,则在检查点上进行序列化)。
数据集迭代器也是有状态的。当您一次运行获得一条数据时,它将被消耗,然后在下一次运行中获得另一条数据。迭代器“记住”运行之间的位置。这就是为什么类似于初始化变量的原因,可以初始化迭代器(在它们支持时),以将其重置为已知状态。
从技术上讲,另一种有状态对象是随机操作。通常,人们将随机操作视为随机操作,但实际上它们拥有一个随机数生成器,该生成器的状态确实在两次运行之间保持,并且如果您提供了种子,那么在开始时它们将处于定义明确的状态会议。但是,据我所知,没有任何方法可以将随机操作重置为同一会话中的初始状态。
请注意,术语“有状态”经常(当不是特别指TensorFlow时)以略有不同的含义或以不同的抽象级别使用。例如,递归神经网络(RNN)一般说来,它们是有状态的,因为从概念上讲,它们的内部状态随收到的每个输入而变化。但是,当您在TensorFlow中创建RNN时,内部状态不一定必须处于有状态对象中!像任何其他类型的神经网络一样,TensorFlow中的RNN原则上将具有一些参数或权重,通常存储在可训练变量中-
因此,以TensorFlow术语而言,无论是否为RNN,所有可训练模型都具有针对训练参数的有状态对象。但是,Rens的内部状态在TensorFlow中用每次运行时获得的输入状态值和输出状态值表示(请参见tf.nn.dynamic_rnn
),那么您可以在每次运行时从“零”状态开始,而不必理会最终的输出状态。当然,如果需要,您也可以将输入状态作为变量的值,然后将输出状态写回该变量,然后您的RNN内部状态将对TensorFlow处于“有状态”;也就是说,您将能够在一次运行中处理一些数据,并在下一次运行中处理“将数据留在原处”(视情况而定)。我知道这可能会有点混乱,但我希望这是有道理的。
问题内容: 目前,我正在阅读“ Java并发实践”,其中包含以下句子: 由于线程访问无状态对象的操作不会影响其他线程上操作的正确性,因此无状态对象是线程安全的。 那么,什么是无状态对象? 问题答案: 无状态对象是没有实例字段(实例变量)的类的实例。该类 可能 具有字段,但是它们是编译时常量(静态final)。 一个非常相关的术语是 不可变的 。不可变的对象可能具有状态,但是在调用方法时状态不会改变
我试图在张量流图中使用条件随机场损失。 我正在执行序列标记任务: 我有一系列元素作为输入。每个元素可以属于三个不同类中的一个。类以一种热编码方式表示:属于类0的元素由向量[表示。 我的输入标签(y)有大小(xx)。 我的网络产生相同形状的日志。 假设我所有的序列都有长度4。 这是我的代码: 我得到以下错误: 文件“/usr/local/lib/python2.7/dist-packages/ten
据我所知,基本类型是Scalar,数组是聚合的,但用户定义的类型呢?根据什么标准,我可以将它们分为两类?
问题内容: 我定义这样的张量: 但是当我尝试打印张量的形状时: 我得到 Tensor(“ Shape:0”,shape =(1,),dtype = int32) ,为什么输出结果不应为shape =(100) 问题答案: tf.shape(input,name = None) 返回表示输入形状的一维整数张量。 你要找的:它返回的的变量。
问题内容: 我知道状态允许我们创建动态和交互的组件,但是我想深入了解状态。 有人可以通过一个真实的例子来帮助我理解React中的状态吗? 问题答案: 在上面的代码中,它有一个带有:count 的对象。 状态可以简单地理解为特定组件/应用在该时间点的值。在上面的示例中,当应用首次运行时,该应用处于状态 如我们所见,有两个按钮,它们使用来更新值,它只是更新应用计数的“状态”,并且只要状态改变,应用都会
本文向大家介绍hibernate 对象有哪些状态?相关面试题,主要包含被问及hibernate 对象有哪些状态?时的应答技巧和注意事项,需要的朋友参考一下 临时/瞬时状态:直接 new 出来的对象,该对象还没被持久化(没保存在数据库中),不受 Session 管理。 持久化状态:当调用 Session 的 save/saveOrupdate/get/load/list 等方法的时候,对象就是持久化