Cifar100仅具有16个训练图像和16个训练标签

问题描述 投票:0回答:1

我正在将Tensorflow与Python 3.7配合使用,并且尝试使用CIFAR-100进行图像分类。这是我的代码:

import tensorflow as tf
import tensorflow_datasets as tfds
import numpy as np
import matplotlib.pyplot as plt
import PIL.Image as Image
from tensorflow import keras

tf.compat.v1.enable_eager_execution()

shape = (224, 224)

labels = '/home/pi/tf/cifar_labels.txt'
labels = np.array(open(labels).read().splitlines())

img = '/home/pi/tf/lobster.jpeg'
img = Image.open(img).resize(shape)
img = np.array(img)/255.0
img = np.reshape(img, (224, 224, 3))

train = tfds.load(name="cifar100", split="train")
test = tfds.load(name="cifar100", split="test")

train = train.shuffle(1024).batch(32).prefetch(tf.data.experimental.AUTOTUNE)
test = test.shuffle(1024).batch(32).prefetch(tf.data.experimental.AUTOTUNE)

for features in train:
    train_images, train_labels = features["image"], features["label"]

for features in test:
    test_images, test_labels = features["image"], features["label"]

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(32, 32, 3)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(100, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

history = model.fit(train_images, train_labels, epochs=200, verbose=2)

test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)

print('\nTest accuracy:', test_acc)

我猜测for features in train for循环有问题。当我打印训练图像/标签的len时,我得到16。因此,我的模型得到的训练准确度为0%,损失为16.1181%。有人可以帮忙吗?

python tensorflow machine-learning python-3.7
1个回答
0
投票

您可以简单地从cifar10加载tf.keras.datasets数据集>

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()
print(x_train.shape, x_test.shape)
Output: (50000, 32, 32, 3) (10000, 32, 32, 3)
© www.soinside.com 2019 - 2024. All rights reserved.