python - 如何转换数据格式以便将其用于 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 以运行培训?我离目标很远吗?
解决方案
(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。
推荐阅读
- c++ - 套接字接受无效参数(c++)
- ms-access - 访问 VBA:通过函数设置 ComboBox 高度
- ios - UICollectionView AutoSizingCells reloadData()上的奇怪跳转/故障
- java - 尝试安装sas软件时出现以下情况
- php - 选择查询的流明时区相关问题
- python - 给定两个“if”语句,如果其中没有一个被执行,则执行一些代码
- python - TypeError:列表索引必须是整数,而不是 str (MAPNIK)
- flutter - 在 Flutter 中推送新页面时,Navigator 堆栈上的页面会重建
- sql - 我可以在 2 个不同的表中但在 Oracle 的相同列上使用相同的索引吗
- python - Pandas 中的 lambda 函数后索引列消失