如何解决如何在张量流中重用操作?
Keras层可以重复使用,即如果我拥有l = keras.layers.Dense(5)
,我可以将其多次应用于不同的张量,例如t1 = l(t1); t2 = l(t2)
。
在不使用keras的情况下,张量流中是否存在类似的东西?
我为什么需要它。我具有non-eager
模式,并希望创建静态.pb
图形文件。假设我有一个庞大而又长的函数f(t)
,它执行张量t
转换。在图内部,它会创建张大的不同操作的子图,其中的张量在路径上流动。现在,我想重用它,这意味着我不想为每个输入t
都调用它,因为它每次都会形成新的子图,只是使用不同的输入进行重复。我想以某种方式重用相同的子图并将不同的张量作为该子图的输入。另外,最好重用它,因为它很慢,不要为每个可能的输入张量调用巨大的函数来形成相同的结构。
重用相同操作的另一个重要原因是,相同的权重和重参数可用于许多输入上的许多操作调用。对于所有输入而言,权重必须相同,这样才能正确训练神经网络。
重用的真正原因不仅在于节省图形所占用的空间,还在于对f(t)
的可能输入数量可能随输入而变化的事实。假设我们有keras.layers.Input(...)
个占位符作为输入。它在图构建时始终具有等于无(未知)的第0个维度,仅当通过sess.run(...)
馈送实数据时才知道第0个维度的实际值。现在,当输入数据时,我要进行与批处理尺寸大小一样多的转换(调用f(t)
),换句话说,我要为批处理中的每个子张量调用f(t)。例如。对于图像批次,我想为批次中的每个图像调用f(t)。因此,对于不同的批次大小,将有不同数量的f(t)调用。我该如何实现?如果可以的话,是否可以通过tf.while_loop来实现?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。