为什么Tensorflow/KerasFlatten层没有展平我的阵列?

我正在尝试使用tensorflow.keras.layers.Flatten模型外部的层来展平 4x4 张量。我不明白为什么该Flatten层实际上没有展平我的阵列。

这是我的代码:

import tensorflow as tf
import numpy as np

flayer = tf.keras.layers.Flatten()
X = tf.constant(np.random.random((4,4)),dtype=tf.float32)
Xf = flatten_layer(X)
print(Xf)

print(Xf)显示

tf.Tensor(
[[0.9866459  0.52488756 0.86211777 0.06254051]
 [0.32552275 0.23201537 0.8646714  0.80754006]
 [0.55823076 0.51929855 0.538077   0.4111973 ]
 [0.95845264 0.14468837 0.30223057 0.09648433]], shape=(4, 4), dtype=float32)

为什么我的展平层不输出 16x1 张量?

回答

那是因为该Flatten()层假定第一个维度是样本数,因此它返回 4 个展平的行。您已经有 4 个观察值和 1D 输入。(32, 28, 28, 1)例如,如果您的数据具有 shape ,则其行为会有所不同,例如,每行具有更高的维度。

import tensorflow as tf
import numpy as np

flayer = tf.keras.layers.Flatten()
X = tf.constant(np.random.random((32, 28, 28, 1)),dtype=tf.float32)
Xf = flayer(X)
print(Xf.shape)
(32, 784)

如果您打算使用 shape 将一个观察结果展平(4, 4),您应该添加一个批处理维度以使其工作:

X = tf.constant(np.random.random((1, 4, 4)),dtype=tf.float32)
Xf = flayer(X)
print(Xf.shape)
(1, 16)


以上是为什么Tensorflow/KerasFlatten层没有展平我的阵列?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>