首页 > 解决方案 > 如何转换数据格式以便将其用于 VGG16 深度学习

问题描述

我正在尝试使用 VGG16 准备将在我的面部表情识别模型中使用的训练和测试数据。经过一番研究,我已经知道所需的数据格式应该是 (size, 224, 224, 3)。到目前为止,我得到了:

X_train_ (26859, 2304, 3)
y_train (26859,)
X_test (1044, 2304, 3)
y_test (1044,)

但是当我试图通过以下方式进一步重塑它时

X_train.reshape((26859, 224, 224, 3))

我有

ValueError: cannot reshape array of size 185649408 into shape (26859,224,224,3)

我认为我的 y_train 和 y_test 很好,但是我应该如何处理 X_train 和 X_test 以运行培训?我离目标很远吗?

标签: pythonmachine-learningkerasdeep-learning

解决方案


(26859, 48, 48, 3)要解决该问题,您应该首先使用以下函数将数据转换为具有形状的张量reshape

X_train.reshape((26859, 48, 48, 3))

之后,由于 VGG16 网络接受 shape 的张量(size, 224, 224, 3),因此您应该使用零填充在训练和测试图像的边界插入额外的零,以增加它们的宽度和高度。

对输入张量进行零填充的可用函数之一是tf.keras.layers.ZeroPadding2D. 它是一个额外的层,对输入张量应用零填充。

有关 ZeroPadding2D 层的更多信息,请参阅其文档tf.keras.layers.ZeroPadding2D API DOC


推荐阅读