Ошибка вызвана тем, что
train_labels = train_labels / 255.0
train_labels
является меткой.Разделив его на 255, полученный ndarray содержит числа с плавающей запятой.Поэтому в качестве индекса для class_names
используется плавающее число, приводящее к первой ошибке.
индексы списка должны быть целыми числами или слайсами, а не numpy.float64
Toпреобразовать массив numy x
в int, вот путь: x.astype(int)
.Но в этом случае при этом будет создан массив со всеми значениями, равными 0.
Исправлено удаление строки, указанной выше:
from __future__ import absolute_import, division, print_function
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
train_images = train_images / 255.0
# train_labels = train_labels / 255.0
plt.figure(figsize=(10,10))
for i in range(25):
print(train_labels[i], train_images.shape, train_labels.shape, type(train_labels))
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()