Как отобразить отдельные цифры MNIST, каждая в одной строке?
Я хотел бы отобразить отдельные цифры от 0 до 9, каждая в одной строке и 5 примеров для каждой цифры. Фотография является примером: пример В моем случае это 10 строк, 5 столбцов.
Мне удалось отобразить первые 50 изображений примерно так (извините за изображение, я не смог отформатировать код в stackru): code
Как я могу напечатать каждую цифру с ее этикеткой в одной строке? Я пробовал уже несколько часов, но понятия не имею, кроме использования numpy.take(), но не знаю как. Я уже много гуглил без результата.
Заранее спасибо!
1 ответ
Сначала вам нужен набор данных:
dataset = keras.datasets.mnist.load_data()
Затем вы разделяете это:
X_train = dataset[0][0]
y_train = dataset[0][1]
X_test = dataset[1][0]
y_test = dataset[1][1]
Тогда вы можете создать словарь индексов цифр
Здесь я использую тестовый набор данных. Вы можете использовать train, если хотите, просто замените y_train:
digits = {}
for i in range(10):
digits[i] = np.where(y_test==i)[0][:5]
digits
Этот dict будет выглядеть так:
{0: array([ 3, 10, 13, 25, 28], dtype=int64),
1: array([ 2, 5, 14, 29, 31], dtype=int64),
2: array([ 1, 35, 38, 43, 47], dtype=int64),
3: array([18, 30, 32, 44, 51], dtype=int64),
4: array([ 4, 6, 19, 24, 27], dtype=int64),
5: array([ 8, 15, 23, 45, 52], dtype=int64),
6: array([11, 21, 22, 50, 54], dtype=int64),
7: array([ 0, 17, 26, 34, 36], dtype=int64),
8: array([ 61, 84, 110, 128, 134], dtype=int64),
9: array([ 7, 9, 12, 16, 20], dtype=int64)}
Наконец, вы создаете фигуру и сюжеты, как это:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(10, 5, sharex='col', sharey='row')
for i in range(10):
for j in range(5):
ax[i, j].imshow(X_test[digits[i][j]])