【问题标题】:Cifar-100 Dataset Error - Received a label value of 97 which is outside the valid range of [0, 10)Cifar-100 数据集错误 - 收到的标签值 97 超出 [0, 10) 的有效范围
【发布时间】:2019-10-25 04:59:19
【问题描述】:

使用 Cifar-100 数据集时出现此错误。我很确定我有正确的输入形状,我有一个 97 的输出层,这是数据集中所有可能的输出。我可能做错了什么?注意:我是 ML 和 Tensorflow 的新手,请教我一些东西。 :)

tensorflow.python.framework.errors_impl.InvalidArgumentError:  Received a label value of 97 which is outside the valid range of [0, 10).  Label values: 7 97 79 82 97 33 19 73 28 93 32 6 51 68 67 38 55 1 56 60 97 27 79 36 87 34 20 22 7 42 34 62

谢谢。下面是我的代码。刚接触 Tensorflow,我不知道自己做错了什么。

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

#print(train_images[0])
#print("Network Accuracy: " + str(test_acc))
# plt.imshow(train_images[0], cmap=plt.cm.binary) #greyscale
# plt.imshow(train_images[0]) #neon
# plt.show()

cifar100_mnist = keras.datasets.cifar100

(train_images, train_labels), (test_images, test_labels) = cifar100_mnist.load_data()

train_images = train_images/255
test_images = test_images/255
classes = [
    'apple', 'aquarium_fish', 'baby', 'bear', 'beaver', 'bed', 'bee', 'beetle',
    'bicycle', 'bottle', 'bowl', 'boy', 'bridge', 'bus', 'butterfly', 'camel',
    'can', 'castle', 'caterpillar', 'cattle', 'chair', 'chimpanzee', 'clock',
    'cloud', 'cockroach', 'couch', 'crab', 'crocodile', 'cup', 'dinosaur',
    'dolphin', 'elephant', 'flatfish', 'forest', 'fox', 'girl', 'hamster',
    'house', 'kangaroo', 'keyboard', 'lamp', 'lawn_mower', 'leopard', 'lion',
    'lizard', 'lobster', 'man', 'maple_tree', 'motorcycle', 'mountain', 'mouse',
    'mushroom', 'oak_tree', 'orange', 'orchid', 'otter', 'palm_tree', 'pear',
    'pickup_truck', 'pine_tree', 'plain', 'plate', 'poppy', 'porcupine',
    'possum', 'rabbit', 'raccoon', 'ray', 'road', 'rocket', 'rose',
    'sea', 'seal', 'shark', 'shrew', 'skunk', 'skyscraper', 'snail', 'snake',
    'spider', 'squirrel', 'streetcar', 'sunflower', 'sweet_pepper', 'table',
    'tank', 'telephone', 'television', 'tiger', 'tractor', 'train', 'trout',
    'tulip', 'turtle', 'wardrobe', 'whale', 'willow_tree', 'wolf', 'woman',
    'worm'
]
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(32, 32, 3)),
    keras.layers.Dense(150, activation="relu"),
    keras.layers.Dense(97, activation="softmax")
])

model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(train_images, train_labels, epochs=5)

test_loss, test_acc = model.evaluate(test_images, test_labels)
print(test_acc)
# print(test_images)
prediction = model.predict(test_images)
answer = np.argmax(prediction[1])
print(classes[answer])
# print(train_images[0])
plt.imshow(train_images[1])
plt.show()

【问题讨论】:

    标签: python tensorflow scikit-learn


    【解决方案1】:

    cifar100 数据集在其最后一个 softmax 中有 100 个类。所以最后一个密集层,在你的模型中必须有 100 作为单位的值。

    你可以在下面找到更新的代码

    import tensorflow as tf
    from tensorflow import keras
    import numpy as np
    import matplotlib.pyplot as plt
    
    #print(train_images[0])
    #print("Network Accuracy: " + str(test_acc))
    # plt.imshow(train_images[0], cmap=plt.cm.binary) #greyscale
    # plt.imshow(train_images[0]) #neon
    # plt.show()
    
    cifar100_mnist = keras.datasets.cifar100
    
    (train_images, train_labels), (test_images, test_labels) = cifar100_mnist.load_data()
    
    train_images = train_images/255
    test_images = test_images/255
    classes = [
        'apple', 'aquarium_fish', 'baby', 'bear', 'beaver', 'bed', 'bee', 'beetle',
        'bicycle', 'bottle', 'bowl', 'boy', 'bridge', 'bus', 'butterfly', 'camel',
        'can', 'castle', 'caterpillar', 'cattle', 'chair', 'chimpanzee', 'clock',
        'cloud', 'cockroach', 'couch', 'crab', 'crocodile', 'cup', 'dinosaur',
        'dolphin', 'elephant', 'flatfish', 'forest', 'fox', 'girl', 'hamster',
        'house', 'kangaroo', 'keyboard', 'lamp', 'lawn_mower', 'leopard', 'lion',
        'lizard', 'lobster', 'man', 'maple_tree', 'motorcycle', 'mountain', 'mouse',
        'mushroom', 'oak_tree', 'orange', 'orchid', 'otter', 'palm_tree', 'pear',
        'pickup_truck', 'pine_tree', 'plain', 'plate', 'poppy', 'porcupine',
        'possum', 'rabbit', 'raccoon', 'ray', 'road', 'rocket', 'rose',
        'sea', 'seal', 'shark', 'shrew', 'skunk', 'skyscraper', 'snail', 'snake',
        'spider', 'squirrel', 'streetcar', 'sunflower', 'sweet_pepper', 'table',
        'tank', 'telephone', 'television', 'tiger', 'tractor', 'train', 'trout',
        'tulip', 'turtle', 'wardrobe', 'whale', 'willow_tree', 'wolf', 'woman',
        'worm'
    ]
    model = keras.Sequential([
        keras.layers.Flatten(input_shape=(32, 32, 3)),
        keras.layers.Dense(150, activation="relu"),
        keras.layers.Dense(100, activation="softmax")
    ])
    
    model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
    model.fit(train_images, train_labels, epochs=5)
    
    test_loss, test_acc = model.evaluate(test_images, test_labels)
    print(test_acc)
    # print(test_images)
    prediction = model.predict(test_images)
    answer = np.argmax(prediction[1])
    print(classes[answer])
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2022-06-29
      • 2021-06-08
      • 1970-01-01
      • 2020-04-03
      • 2019-02-18
      • 1970-01-01
      • 2019-11-22
      • 2021-08-29
      • 2021-07-12
      相关资源
      最近更新 更多