Keras 错误:检查模型目标时出错:要传递给模型的 Numpy 数组列表不是模型预期的大小



我正在按照 https://www.tensorflow.org/tutorials/keras/basic_classification 来解决Kaggle挑战。

但是,我不明白我应该将哪种数据输入到适合函数中。

我将训练数据集拆分为X_trainy_trainX_testy_testX_train(13125, 32, 32, 3)的形状。

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(32, 32, 3)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam', 
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
model.fit(X_train, y_train, epochs=5)

我收到一个错误:

检查模型目标时出错:要传递给模型的 Numpy 数组列表不是模型预期的大小。预计会看到 1 个数组,但得到了以下 13125 个数组的列表:

更新:

# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras
# Helper libraries
import numpy as np
import matplotlib.pyplot as plt
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(32,32,3)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam', 
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

X_train_stack = np.vstack(X_train)
model.fit(X_train_stack, y_train, epochs=5)

我收到一个错误:

检查输入时出错:预期flatten_7_input有 4 个维度,但得到形状为 (420000、32、3( 的数组

#read in training set
train_img = []
train_lb = []
for i in range(len(cactus_label)):
    row = cactus_label.iloc[i]
    fileName = row['id']
    train_lb.append(row['has_cactus'])
    path = "../input/train/train/{}".format(fileName)
    im = mpimg.imread(path)
    train_img.append(im)
X_train, X_test, y_train, y_test = train_test_split(train_img, train_lb) 
X_train = np.array(X_train)
X_test = np.array(X_test)

您需要传递 numpy 数组,但您要传递 numpy 数组列表。使用 np.stack() 从 numpy 数组列表创建单个 numpy 数组:

X_train = np.stack(X_train, axis=0)

最新更新