Получение ошибки размера в opencv при работе с набором данных MNIST - PullRequest
0 голосов
/ 29 января 2019

Я тренирую MLP с использованием модулей OpenCV и ML.Я получаю неизвестную ошибку, которую я не могу исправить:

"ошибка: OpenCV (3.4.3) /io/opencv/modules/ml/src/data.cpp:257: ошибка: (-215: утверждение не выполнено) samples.type () == CV_32F || samples.type () == CV_32S в функции 'setData' "

Вот мои коды:

    from keras.datasets import mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train.shape, y_train.shape
import numpy as np
np.unique(y_train)
import matplotlib.pyplot as plt
%matplotlib inline
for i in range(10):
  plt.subplot(2, 5, i+1)
  plt.imshow(X_train[i, :, :], cmap='gray')
  plt.axis('off')
from sklearn.preprocessing import OneHotEncoder
enc=OneHotEncoder(sparse=False, dtype=np.float32)
y_train_pre=enc.fit_transform(y_train.reshape(-1,1))
y_test_pre=enc.fit_transform(y_test.reshape(-1,1))
X_train_pre=X_train.reshape((X_train.shape[0], -1))
X_train_pre=X_train.astype(np.float32) /255.0
X_test_pre=X_test.reshape((X_test.shape[0], -1))
X_test_pre=X_test.astype(np.float32) / 255.0
import cv2
mlp=cv2.ml.ANN_MLP_create()
mlp.setLayerSizes(np.array([784, 512, 512, 10]))
mlp.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM, 2.5, 1.0)
mlp.setTrainMethod(cv2.ml.ANN_MLP_BACKPROP)
mlp.setBackpropWeightScale(0.00001)
term_mode= (cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS)
term_max_iter=10
term_eps=0.01
mlp.setTermCriteria((term_mode, term_max_iter, term_eps))
mlp.train(X_train_pre, cv2.ml.ROW_SAMPLE, y_train_pre)

Я получил ошибку после запуска последней ячейки.Это значит во время тренировки!Я не могу это исправить, но их что-нибудь связано с размером слоев?или преобразование типов с использованием NumPy?Если вы, ребята, можете направить меня, это поможет мне.Заранее спасибо, ребята.

1 Ответ

0 голосов
/ 02 февраля 2019

Изображения должны быть одномерными векторами, но они вводятся с формой [28,28].Например, это изменит изображения и будет работать:

mlp.train(X_train_pre.reshape(60000,-1), cv2.ml.ROW_SAMPLE, y_train_pre)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...