如何重塑具有多个“None”维度的张量?
How to reshape a tensor with multiple `None` dimensions?
我在将中间 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_rows
和nb_cols
是已知整数时,我可以毫无问题地重塑X
。但是,在我的应用程序中,我需要处理这种情况
nb_rows = nb_cols = None
我该怎么办?我试过 Y = tf.reshape( X, (-1, -1, nb_filters))
但显然没用。
对我来说,这个操作是确定性的,因为它总是将两个中间轴压缩成一个,同时保持第一个轴和最后一个轴不变。谁能帮帮我?
在这种情况下,您可以通过 tf.shape(X)
:
访问 X
的动态形状
shape = [tf.shape(X)[k] for k in range(4)]
Y = tf.reshape(X, [shape[0], shape[1]*shape[2], shape[3]])
我在将中间 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_rows
和nb_cols
是已知整数时,我可以毫无问题地重塑X
。但是,在我的应用程序中,我需要处理这种情况
nb_rows = nb_cols = None
我该怎么办?我试过 Y = tf.reshape( X, (-1, -1, nb_filters))
但显然没用。
对我来说,这个操作是确定性的,因为它总是将两个中间轴压缩成一个,同时保持第一个轴和最后一个轴不变。谁能帮帮我?
在这种情况下,您可以通过 tf.shape(X)
:
X
的动态形状
shape = [tf.shape(X)[k] for k in range(4)]
Y = tf.reshape(X, [shape[0], shape[1]*shape[2], shape[3]])