【问题标题】:Keras softmax probabilitiesKeras softmax 概率
【发布时间】:2023-04-10 15:36:01
【问题描述】:

我试图从最后一层是 softmax 层的网络中获取 softmax 概率,当我使用 model.predict() 时,我得到的是类而不是概率。谁能告诉如何获得概率。

 model = Sequential() 
 model.add(Convolution2D(32, 3, 3,input_shape=(32, 32, 3))) 
 model.add(MaxPooling2D((2, 2))) 
 model.add(Dropout(0.5))
 model.add(Activation('relu'))
 model.add(Convolution2D(32, 3, 3))
 model.add(MaxPooling2D((2, 2))) 
 model.add(Dropout(0.5))
 model.add(Activation('relu'))
 model.add(Flatten())      
 model.add(Dense(128))
 model.add(Activation('relu')) 
 model.add(Dense(43)) 
 model.add(Activation('softmax'))

【问题讨论】:

  • 请提供更多信息,如果网络有 softmax 输出,那么 model.predict 将返回这些概率。如果您没有看到概率,那么代码中有问题。
  • 你对“类”和“概率”的理解是什么? Softmax 将始终返回所有类的“机会”,总和为 1。
  • 请显示您的模型构建代码
  • 我的网是:.我的网是:model = Sequential() model.add(Convolution2D(32, 3, 3,input_shape=(32, 32, 3))) model.add(MaxPooling2D ((2, 2))) model.add(Dropout(0.5)) model.add(Activation('relu')) model.add(Convolution2D(32, 3, 3)) model.add(MaxPooling2D((2, 2))) model.add(Dropout(0.5)) model.add(Activation('relu')) model.add(Flatten()) model.add(Dense(128)) model.add(Activation('relu' )) model.add(Dense(43)) model.add(Activation('softmax'))
  • 当我使用 model.predict(pics_data[0:6], batch_size=32, verbose=1) 我得到 0 和 1 而不是概率(我认为是直接预测的类)跨度>

标签: keras softmax


【解决方案1】:

您的模型的输出值将介于 0 和 1 之间。 你的模型应该给出一个大小为 43 的向量,并且所有输出的总和将加一。

根据您的训练,如果与训练示例相似,这些“概率”对于所选类通常几乎为 1,表明模型训练有素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2018-11-19
    相关资源
    最近更新 更多