如何重塑具有多个“无”维度的张量?

pit*_*all 6 reshape tensorflow tensor

我遇到了将中间 4D 张量流张量重塑X为 3D 张量的问题Y,其中

  • X 是形状 ( batch_size, nb_rows, nb_cols, nb_filters )
  • Y 是形状 ( batch_size, nb_rows*nb_cols, nb_filters )
  • batch_size = None

当然,当nb_rowsnb_cols是已知整数时,我可以X毫无问题地重塑。但是,在我的应用程序中,我需要处理这种情况

nb_rows = nb_cols = None

我该怎么办?我试过了,Y = tf.reshape( X, (-1, -1, nb_filters))但它显然无法正常工作。

对我来说,这个操作是确定性的,因为它总是将两个中间轴压缩成一个,同时保持第一个轴和最后一个轴不变。谁能帮我?

Ant*_*ato 3

在这种情况下,您可以访问Xthrough的动态形状tf.shape(X)

shape = [tf.shape(X)[k] for k in range(4)]
Y = tf.reshape(X, [shape[0], shape[1]*shape[2], shape[3]])
Run Code Online (Sandbox Code Playgroud)

  • 尝试这样做会给我 TypeError: int() argument must be a string, a bytes-like object or a number, not 'Tensor' (4认同)