You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ImageDataGenerator与flow_from_directory时出现ZeroDivisionError报错求助

求助:VGG16特征提取时出现ZeroDivisionError问题

我最近在跑一个基于VGG16的猫狗分类代码,目标是完成Kaggle猫狗大战的分类任务,结果遇到了一个ZeroDivisionError: integer division or modulo by zero的错误,试了几个相关解决方案都没搞定,来请教大家!

背景说明

  • 代码参考的是预训练VGG16的示例实现
  • 数据集来自Kaggle猫狗大战项目,我的数据目录结构为:sample文件夹下包含test、train、validation三个子文件夹,其中validation文件夹存放的是从train集中拆分出来的图片

错误详情

错误发生在代码行features[i * batch_size : (i + 1) * batch_size] = features_batch处,具体报错为ZeroDivisionError: integer division or modulo by zero。我已经尝试过三个分别来自技术问答社区和框架仓库的解决方案,但问题依然存在。

相关代码

import keras
keras.__version__
from keras.applications import VGG16
conv_base = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))
conv_base.summary()
import os
import numpy as np
from keras.preprocessing.image import ImageDataGenerator

base_dir = 'C:\\Users\\K\\Documents\\Code\\sample'
test_dir = os.path.join(base_dir, 'test')
train_dir = os.path.join(base_dir, 'train')
validation_dir = os.path.join(base_dir, 'validation')

datagen = ImageDataGenerator(rescale=1./255)
batch_size = 20

def extract_features(directory, sample_count):
    features = np.zeros(shape=(sample_count, 4, 4, 512))
    labels = np.zeros(shape=(sample_count))
    generator = datagen.flow_from_directory(
        directory,
        target_size=(150, 150),
        batch_size=batch_size,
        class_mode='binary'
    )
    i = 0
    for inputs_batch, labels_batch in generator:
        features_batch = conv_base.predict(inputs_batch)
        features[i * batch_size : (i + 1) * batch_size] = features_batch
        labels[i * batch_size : (i + 1) * batch_size] = labels_batch
        i += 1
        if i * batch_size >= sample_count:
            # Note that since generators yield data indefinitely in a loop,
            # we must `break` after every image has been seen once.
            break
    return features, labels

train_features, train_labels = extract_features(train_dir, 2000)
validation_features, validation_labels = extract_features(validation_dir, 1000)
test_features, test_labels = extract_features(test_dir, 1000)

内容的提问来源于stack exchange,提问作者Sade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:38:42