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

手语识别神经网络:如何获取全连接层最大概率输出及生成预测字母一维列表

嘿,作为新手能练出99%准确率的手语识别模型已经超棒啦!先帮你理清楚代码的基础逻辑,再解决你问的两个问题~

先搞懂核心代码的运作逻辑

关于输出层的model.add(Dense(units=26,activation="softmax"))

  • 这里的units=26对应26个英文字母,每个单元就像一个“概率计算器”,输出当前输入的手语数据属于对应字母的可能性。
  • softmax激活函数的作用是把这26个单元的输出值压缩到0-1之间,而且所有26个概率加起来刚好等于1。这样你就能直观看到每个字母的概率占比,比如某样本输出里A的概率是0.95,其他字母加起来才0.05,那基本就能确定是A了。

关于评估准确率的model.evaluate(x=test_X,y=test_Y,batch_size=32)

  • test_X是你准备好的测试用手语数据,test_Y是这些数据对应的真实字母标签(相当于标准答案)。
  • batch_size=32是说模型每次一次性处理32个测试样本,这样计算效率更高。
  • 最后返回的accuracy是模型预测正确的样本数占总测试样本数的比例,99%的准确率说明你的模型对手语字母的识别能力已经非常强了!
问题一:如何获取全连接层输出中概率最大的结果

你可以先用model.predict(test_X)得到所有测试样本的概率矩阵(形状是[样本数量, 26],每一行对应一个样本的26个字母概率),然后用下面两种简单方法取最大值对应的索引:

  • 方法一(用numpy):

    import numpy as np
    # 先得到所有样本的概率预测结果
    predictions = model.predict(test_X)
    # 沿着每一行(每个样本的26个概率)找最大值的索引,axis=1表示行方向
    max_prob_indices = np.argmax(predictions, axis=1)
    

    这里得到的索引0对应字母A,1对应B,……,25对应Z。

  • 方法二(用TensorFlow后端):

    import tensorflow as tf
    predictions = model.predict(test_X)
    max_prob_indices = tf.keras.backend.argmax(predictions, axis=1)
    # 如果需要转换成numpy数组方便后续处理
    max_prob_indices = max_prob_indices.numpy()
    
问题二:生成仅包含预测字母的一维列表

拿到上面的索引后,只需要把索引映射成对应的字母就行,步骤如下:

  1. 先创建一个字母和索引对应的列表:
    letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
               'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    
  2. 用列表推导式快速生成预测字母的一维列表:
    predicted_letters = [letters[idx] for idx in max_prob_indices]
    
    这样predicted_letters就是你想要的结果啦,比如它可能是['A', 'G', 'Z', 'M', ...],每个元素对应一个测试样本的预测字母。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:13:44