MNIST набор данных пропущенных классов - PullRequest
0 голосов
/ 22 октября 2018

Я тренирую ConvNet с использованием Keras и Theano, но перед этим я решил взглянуть на набор данных, его образцы данных и классы ... И мне не нравится то, что я вижу.

Я использую следующий код для загрузки как обучающих, так и тестовых наборов данных и подсчитываю, сколько образцов данных помечены для каждого:

import numpy as np
from keras.datasets import mnist

(X_train, y_train), (X_test, y_test) = mnist.load_data()

train_classes = [0,0,0,0,0,0,0,0,0,0]
test_classes = [0,0,0,0,0,0,0,0,0,0]

for i in y_train:
    train_classes[y_train[i]] = train_classes[y_train[i]] + 1

for i in y_test:
    test_classes[y_test[i]] = test_classes[y_test[i]] + 1

print('Training classes: ', train_classes)
print('\nTesting classes: ', test_classes)

... И результаты вызывают беспокойство:

(ann) C:\Users\shado\mnist>python statistics.py
Using Theano backend.
Training classes:  [6742, 17900, 5421, 6265, 11907, 5923, 0, 0, 0, 5842]

Testing classes:  [1010, 1924, 1135, 0, 1940, 974, 0, 980, 0, 2037]

Таким образом, как видно из количества меток, в обучающем наборе данных отсутствуют классы «6», «7» и «8», а в наборе данных тестирования отсутствуют «3», «6».и 8 классов.И, конечно же, распределение классов происходит повсеместно, особенно в учебном наборе данных.

Я загружаю неправильный набор данных?Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 22 октября 2018

Вам нужна следующая логика:

for i in y_train:
    train_classes[i] += 1

, поскольку i уже является меткой.

Или эквивалентно:

for i in range(len(y_train)):
    train_classes[y_train[i]] += 1

Ваш текущий код по существуслучайная выборка первых 10 меток каждого набора ...

Примечание: вы также можете просто использовать: np.unique(y_train, return_counts=True).

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