Как исправить найденные входные переменные с несовместимым количеством выборок: ошибка [1080, 428] - PullRequest
0 голосов
/ 29 апреля 2019

Я работаю над набором данных индийского спонтанного выражения, который имеет 428 изображений, каждое из которых имеет форму (1080, 1920, 3).Классификационные классы - 4, форма - (428, 4).При разбиении на данные обучения, проверки и тестирования с помощью train_test_split:

X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=42)

я получаю указанную ошибку.

Я пытался изменить данные, но все равно не смог добиться успеха.

import cv2 as cv
data=pd.read_excel('/content/drive/My Drive/ISED/details1.xlsx')
count=0
path = data['img_path']
for path in data['img_path']:
    count=count+1    
    temp1 = path.replace("'", "")
    imgpath = "/content/drive/My Drive/ISED/" + temp1
    imgFile = cv.imread(imgpath)
    X = np.asarray(imgFile)
print(X.shape)
print(count)
y = pd.get_dummies(data['emotion']).as_matrix()

# # #storing them using numpy
np.save('fdataXISED', X)
np.save('flabelsISED', y)
# #
print("Preprocessing Done")
print("Number of Features: "+str(len(X[0])))
print("Number of Labels: "+ str(len(y[0])))
print("Number of examples in dataset:"+str(len(X)))
print("X,y stored in fdataXISED.npy and flabelsISED.npy respectively")

num_features = 1920
num_labels = 4
batch_size = 64
epochs = 100
width, height = 1080, 1920

x = np.load('./fdataXISED.npy')
y = np.load('./flabelsISED.npy')
print(x.dtype)
x = x.astype(float)
x -= np.mean(x, axis=0)

x /= np.std(x, axis=0)
print(x.shape,"   ", y.shape)
#splitting into training, validation and testing data
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.1, 
random_state=42)
X_train, X_valid, y_train, y_valid = train_test_split(X_train, y_train, 
test_size=0.1, random_state=

Я ожидаю правильного разделения данных для обучения.

1 Ответ

0 голосов
/ 29 апреля 2019

Проблема здесь, X = np.asarray(imgFile) в for path in data['img_path']: Итак, X несет только последнее изображение.Пожалуйста, измените, как это,

X=[]
for path in data['img_path']:
    count=count+1    
    temp1 = path.replace("'", "")
    imgpath = "/content/drive/My Drive/ISED/" + temp1
    imgFile = cv.imread(imgpath)
    imgFile = np.asarray(imgFile)
    X.append(imgFile)
X = np.asarray(X)
print(X.shape)
print(count)

И в конце ваш X будет иметь форму (428,1080,1920,3), а y должен быть в (428,4)

Ошибка возникает из-за различныхколичество образцов в X и y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...