RNN示例中的Tensor Reshape No-op

时间:2015-11-11 03:39:40

标签: python reshape tensorflow

此代码对文件zero_stateRNNCell的方法rnn_cell.py究竟做了什么?我不完全确定[-1, n]形式的形状是什么意思......

enter image description here

3 个答案:

答案 0 :(得分:4)

重塑的语义类似于numpy的语义: http://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

它将张量更改为具有2维,第二维应具有self.state_size元素。例如。如果我的张量有6个元素并且我将它重塑为[-1,2],那么第一个维度将有6/2 = 3个元素。

答案 1 :(得分:1)

拉法尔的榜样很棒。我记得-1的方式是它将该维度的大小设置为适合原始张量的所有数据所需的任何大小。重塑中只能有一个-1。

如果原始张量大小为a,b,c(总元素= a b c) 并将其大小调整为x,y,-1,

然后效果将是-1将最终成为 b c /(y * z)。

一个3,3,3张量(27个元素)重新形成9,3,-1实际上有9,3,1(27个元素)的大小

答案 2 :(得分:0)

Documentation vaguely suggests -1的行为。

  

如果形状是特殊值[-1],那么张量就会变平了   操作输出具有张量的所有元素的1-D张量。

当形状是一个数组时,其中一个元素是-1,这个值只是一个方便的占位符,可以生成一些可能产生相同形状的整数。请注意,可能没有这样的整数(例如,如果您的起始矩阵为[5x5],则无法使用[7, -1]重新整形。)

另外正如你所看到的那样,不能有两个-1,因为这会使形状模糊不清。如上所述,行为类似于numpy's reshape