【发布时间】:2021-08-03 14:35:48
【问题描述】:
我一直在尝试训练一个用于车辆图像分类的模型,但在每个训练时期我一直在损失:0.0000e+00 - 准确度:1.0000 - val_loss: 0.0000e+00 - val_accuracy: 1.0000。
import matplotlib.pyplot as plt
import numpy as np
import os
import PIL
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
import pathlib
data_dir = tf.keras.utils.get_file('cars_photos', origin="C:\\Users\\User\\.keras\\datasets\\cars_photos")
data_dir = pathlib.Path(data_dir)
batch_size = 32
img_height = 180
img_width = 180
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="training",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
class_names = train_ds.class_names
print(class_names)
AUTOTUNE = tf.data.AUTOTUNE
train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)
num_classes = 1
model = Sequential([
layers.experimental.preprocessing.Rescaling(1./255, input_shape=(img_height, img_width, 3)),
layers.Conv2D(16, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(32, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(64, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(num_classes)
])
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
epochs=10
history = model.fit(
train_ds,
validation_data=val_ds,
epochs=epochs
)
我自己下载了图像,最小尺寸为 180x180,最大尺寸为 1920 x 1024。图像也有JPEG和一些PNG格式。
我关注image classification tutorial 并尝试寻找解决方案,但没有找到。
【问题讨论】:
-
你确定你有一节课吗?因为最少有两个类。
-
是的,对,我也想知道。
print(class_names)这一行的输出是什么,@SaltyCode
标签: python tensorflow machine-learning keras deep-learning