首页 > 解决方案 > 如何使用 numpy 数组值在 Keras 模型中输入张量?

问题描述

我试图用 numpy 数组值提供一个 keras 模型张量。但是张量是 4D,数组是 3D。如何将这个 3D numpy 数组 (128, 128, 3) 转换为 4D (?, 128, 128, 3) 张量?

标签: pythontensorflowkeras

解决方案


您可以使用 numpy 数组作为 keras 模型的输入。这取决于您的模型,但通常第一个维度是样本数,最后一个维度是 1。

假设您有 1000 个样本,每个样本都有一个形状数组 (128, 128, 3)。您可以使用 np.stack 组合数组。这是一个简化的示例:

a=np.array([[0,1,2],[3,4,5]])
b=np.array([[6,7,8],[9,10,11]])
c=np.stack((a,b))   #shape (2,2,3) with the first 2 representing the number of samples

如果您想重塑数组以将 1 作为附加的最终维度(例如,将形状从 (1000, 128, 128, 3) 更改为 (1000, 128, 128, 3, 1)),您可以执行以下操作:

X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], \
    X_train.shape[2], X_train.shape[3], 1)

然后可以将其传递给模型。如果您的模型需要将张量传递给它,则可以将数组转换为张量。在 Tensorflow 中,这可以通过 tf.convert_to_tensor- https://www.tensorflow.org/api_docs/python/tf/convert_to_tensor来完成。


推荐阅读