我是 keras 新手,我试图用一组卫星图像构建一个序列模型,其中包含 26 个类,但函数 model.fit_generator 无法识别验证数据,我更改了所有内容,我即将留下这个问题。我的代码是:
_URL = 'https://storage.googleapis.com/kaggle-competitions-data/kaggle-v2/25487/2041232/bundle/archive.zip?GoogleAccessId=web-data@kaggle-161607.iam.gserviceaccount.com&Expires=1615640732&Signature=SVgNSgLgSEzKPYDQZQWiv33ytl6vG1JbWvKqwpIjDoN378hhv99U9NyB3MiyKeQ9bteaatA4hEAGndftP3AR%2B%2FpeHfjwjuOehvjHqaJHYqyKoGcCldDkROwu9C8sYuWV2beC5anxkShel401etLXSmumw%2FvMsfHoXqRSAd4Es0vVJZQ%2Bymmd9Ir9CqIamfxjbztl0cJYB69LfTHuxyicZmoyKbyWIQ%2BmQXXWn5QzobTJX9kOh9nKQF1hBbXeAGOpxZMAS1nCdBWKfCIRlhfY2PlacIcR1MMm1LFjSx82X0lGjjNTGf2CCOYZQAxxhjIfZuBU4U%2Bhx4JP9ClW7s%2BTFw%3D%3D&response-content-disposition=attachment%3B+filename%3Dusos-del-suelo-con-sentinel-2.zip'
path_to_zip = tf.keras.utils.get_file('usos-del-suelo-con-sentinel-2.zip', origin=_URL, extract=True)
PATH = os.path.join(os.path.dirname(path_to_zip))
train_dir = os.path.join(PATH, 'LULC_100samples2021/LULC_100samples2021_Jan_JPG')
test_dir = os.path.join(PATH, 'Test')
batch_size = 20
epochs = 10
IMG_HEIGHT = 224
IMG_WIDTH = 224
image_generator = ImageDataGenerator(validation_split = 0.2, rescale=1./255)
test_image_generator = ImageDataGenerator(rescale=1./255)
train_data_gen = image_generator.flow_from_directory(batch_size=batch_size,
directory=train_dir,
class_mode="categorical",
subset='training',
target_size=(IMG_HEIGHT, IMG_WIDTH),
shuffle=True)
val_data_gen = image_generator.flow_from_directory(batch_size=batch_size,
directory=train_dir,
subset='validation',
class_mode="categorical",
target_size=(IMG_HEIGHT, IMG_WIDTH),
shuffle=False)
model = Sequential([
Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(64, 3, padding='same', activation='relu'),
MaxPooling2D(),
Flatten(),
Dense(128, activation='relu'),
Dense(1)
])
model.compile(loss=tf.keras.losses.CategoricalCrossentropy(), optimizer = "adam", metrics = ["accuracy"])
train_samples=2080
val_samples=520
history = model.fit_generator(
train_data_gen,
steps_per_epoch = train_samples // batch_size,
validation_data = val_data_gen,
validation_steps = val_samples // batch_size,
epochs=epochs
)
我的问题是:准确性在任何时期都不会改变,所以我想我的模型无法识别验证数据。当我尝试预测测试标签时,输出是一个 0 向量,因此我无法预测任何内容。