当改变尺寸时,张量流量尺RNNCell如何衡量张量?

时间:2017-11-29 11:12:48

标签: python tensorflow

我试图了解当从训练到张量流中的推理时,权重如何在RNNCell中进行缩放。

将以下占位符定义为:

data = tf.placeholder(tf.int32,[None,max_seq_len]) targets = tf.placholder(tf.int32,[None,max_seq_len])

在训练期间,batch_size设置为10,例如两个张量都有形状[10,max_seq_len]。但是,在推理过程中只使用了一个例子,而不是一批十个,所以张量的形状为[1,max_seq_len]。

Tensorflow无缝地处理这个尺寸变化,但是,我不确定它是如何做到的?

我的假设是RNNCell中的权重张量实际上是形状[1,hidden_​​dim],并且通过广播实现了对更大批量的缩放,但是我无法在源中找到反映这一点的东西。我已经阅读了https://arxiv.org/pdf/1703.07737.pdfrnn source。任何帮助理解这一点将非常感激。

1 个答案:

答案 0 :(得分:0)

  • 您已将data张量定义为data = tf.placeholder(tf.int32,[None,max_seq_len]),这意味着第一个维度将根据输入进行更改,但第二个维度将始终保持max_seq_len
  • 因此,如果max_seq_len = 5比您的饲料形状可以是[1,5],[2,5],[3,5],这意味着您可以更改第一个维度而不是第二个维度
  • 如果您将第二个维度更改为5以外的数字,则会因错配形状或类似错误而引发错误
  • 您输入的第一个维度(即batch_size)不会影响您网络中任何神经元的权重矩阵