ValueError: 数据基数不明确。请确保所有数组包含相同数量的样本。’x’ 大小: 8 ‘y’ 大小: 3

每当我尝试运行这段代码时,它都会显示这个值错误,我不知道为什么。我检查了标签和图像列表的长度,它们是相等的,但 x_train 和 y_train 的长度不同。请注意,由于某些原因我不能使用 tensorflow.keras,它会显示错误,所以我只使用 keras

import numpy as npimport osimport kerasimport tensorflow as tffrom sklearn.preprocessing import LabelBinarizerfrom sklearn.model_selection import train_test_splitimport cv2 as cvpeople = ['H', 'J']DIR = 'C:\AI'images = []labels = []haar_cascade = cv.CascadeClassifier('haar_face.xml')for person in people:    path = os.path.join(DIR, person)    label = people.index(person)    for img in os.listdir(path):        img_path = os.path.join(path, img)        img_array = cv.imread(img_path)        gray = cv.cvtColor(img_array, cv.COLOR_BGR2GRAY)        face_rect = haar_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=6)        for (x, y, w, h) in face_rect:            face_roi = img_array[y:y + h, x:x + w]            face_roi = cv.resize(face_roi, (128, 128))            images.append(face_roi)            labels.append(label)#images = np.array(images, dtype='float')/255.0#labels = np.array(labels, dtype='float')/255.0x_train, y_train, x_test, y_test = train_test_split(images, labels, test_size=0.2, random_state=4)x_train = np.array(x_train, dtype='float')/255.0y_train = np.array(y_train, dtype='float')/255.0print(len(x_train), ' ', len(y_train))model = keras.models.Sequential()model.add(keras.layers.Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=(128, 128, 3)))model.add(keras.layers.MaxPool2D(pool_size=(2, 2)))model.add(keras.layers.BatchNormalization(axis=-1))model.add(keras.layers.Dropout(0, 2))model.add(keras.layers.Flatten())model.add(keras.layers.Dense(512, activation='relu'))model.add(keras.layers.Dense(1, activation='sigmoid'))model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])hist = model.fit(np.array(x_train), np.array(y_train), epochs=5, batch_size=64)

回答:

sklearn.model_selection.train_test_split 的示例说明如下:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

由于您提供的代码中返回的分割顺序错误,我假设您在模型的 .fit() 函数中提供了测试数据输入而不是训练分割的期望输出数据。请尝试以下方法:

x_train, x_test, y_train, y_test = train_test_split(images, labels, test_size=0.2, random_state=4)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注