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

VGG19模型多分类索引越界:无法识别字母Z的问题咨询

解决索引越界问题并正常识别字母Z

问题根源

你的模型输出层设置为Dense(26, activation='softmax'),对应A-Z共26个类别,因此输出数组的有效索引范围是0到25(A对应0,Z对应25)。但你在判断Z类时错误访问了output[0][26],超出了数组的索引边界,直接触发IndexError。同时原代码的两两比较逻辑既繁琐又易出错,不是合理的分类预测方式。

修正方案

最优方案:用argmax直接获取最大概率类别

这种方式无需手动编写大量判断条件,简洁且不易出错:

import numpy as np
from keras.models import load_model
import cv2
import matplotlib.pyplot as plt
import imageio as io

# 读取Z类图片
A= io.imread('/content/drive/MyDrive/Colab Notebooks/Proyek Akhir/datasetBISINDO/BISINDO Sign Language/Z/IMG_1067.JPG') #Z
B= cv2.resize(A, (64, 64))

img = np.asarray(B)
plt.imshow(img), plt.title("Predicted Result"), plt.axis('off')
img = np.expand_dims(img, axis=0)

# 加载模型
saved_model = load_model("/content/drive/MyDrive/Colab Notebooks/VGG19PAbagas.h5")
output = saved_model.predict(img)

# 获取最大概率对应的索引
pred_index = np.argmax(output[0])
# 将索引映射为对应字母(0=A,1=B...25=Z)
pred_letter = chr(ord('A') + pred_index)

print(f"预测结果:{pred_letter}")

备选方案:修正原判断逻辑(不推荐)

如果坚持使用原有的分支判断逻辑,需删除越界的索引访问,改为判断当前索引是否为最大概率:

# 替换原有的判断代码段
max_prob = np.max(output[0])
if output[0][0] == max_prob:
    print("A")
# ... 此处省略B到X的判断逻辑 ...
elif output[0][24] == max_prob:
    print('Y')
elif output[0][25] == max_prob:
    print('Z')
else:
    print('Tidak Terdefinisi')

内容的提问来源于stack exchange,提问作者Bagas Ruli Pandapotan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:09:24