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

为何下述Python代码训练的模型accuracy指标始终为0?

数据集信息
  • 数据集类型:糖尿病视网膜病变224x224高斯滤波图像
  • 存储位置:已保存至Google Drive
模型训练结果

完成15轮训练后的输出如下:

79/79 [==============================] - 15s 188ms/step - loss: 1.3196 - categorical_accuracy: 0.5105 - precision: 0.9507 - recall: 0.3597 - auc: 0.7881 - accuracy: 0.0000e+00 - val_loss: 1.0488 - val_categorical_accuracy: 0.6261 - val_precision: 0.9576 - val_recall: 0.3559 - val_auc: 0.8218 - val_accuracy: 0.0000e+00

训练集与验证集的accuracy曲线为x轴上的直线

完整训练代码
drive.mount('/content/drive')

# 从Google Drive访问图像文件夹
folder_path = '/content/drive/MyDrive/gaussian_filtered_images'

folders = next(os.walk(folder_path))[1]
print(folders)

# 统计数据集中的图像数量
images = []
label = []

# os.listdir返回文件夹中的文件列表,此处为图像类别名称
for i in os.listdir(folder_path):
  image_class = os.listdir(os.path.join(folder_path, i))
  for j in image_class:
    img = os.path.join(folder_path, i, j)
    images.append(img)
    label.append(i)

print('Number of images : {} \n'.format(len(images)))

df = pd.DataFrame({'Image': images,'Labels': label})

train, test = train_test_split(df, test_size=0.2)


y_train = train['Labels'].to_numpy().ravel()
class_weights = class_weight.compute_class_weight(class_weight='balanced', classes=np.unique(y_train), y=y_train)
class_weights_dict = dict(enumerate(class_weights))

train_datagen = ImageDataGenerator(
        rescale = 1./255,
        validation_split = 0.15)

test_datagen = ImageDataGenerator(rescale = 1./255)

# 加载训练数据
train_generator = train_datagen.flow_from_directory(
    train,
    directory='./',
    x_col="Image",
    y_col="Labels",
    target_size=(256, 256),
    color_mode="rgb",
    class_mode="categorical",
    batch_size=32,
    subset='training')

# 加载验证数据
validation_generator = train_datagen.flow_from_directory(
    train,
    directory='./',
    x_col="Image",
    y_col="Labels",
    target_size=(256, 256),
    color_mode="rgb",
    class_mode="categorical",
    batch_size=32,
    subset='validation')

# 加载测试数据
test_generator = test_datagen.flow_from_directory(
    test,
    directory='./',
    x_col="Image",
    y_col="Labels",
    target_size=(256, 256),
    color_mode="rgb",
    class_mode="categorical",
    batch_size=32)

resnet_model = Sequential()

pretrained_model=tf.keras.applications.ResNet50(
    include_top=False,
    weights="imagenet",
    input_tensor=None,
    # 匹配输入图像尺寸
    input_shape=(256, 256, 3),
    pooling='avg',
    classes=5
)

for layer in pretrained_model.layers:
        layer.trainable=False

resnet_model.add(tf.keras.layers.Lambda(tf.keras.applications.resnet50.preprocess_input)) 
resnet_model.add(pretrained_model)
resnet_model.add(Flatten())
resnet_model.add(Dense(512, activation='relu'))
resnet_model.add(Dense(5, activation='softmax'))

resnet_model.compile(
    optimizer=Adam(learning_rate=0.001),
    loss='categorical_crossentropy',
    metrics=[
        metrics.CategoricalAccuracy(),
        metrics.Precision(),
        metrics.Recall(),
        metrics.AUC(multi_label=True),
        metrics.Accuracy()
    ]
)

epochs=15
history = resnet_model.fit(
  x=train_generator,
  validation_data=validation_generator,
  epochs=epochs,
  class_weight=class_weights_dict,
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:40:11