在 Keras 中,测试样本评估是这样完成的
score = model.evaluate(testx, testy, verbose=1)
这不会返回预测值。有一种方法 predict
返回预测值
model.predict(testx, verbose=1)
回报
[
[.57 .21 .21]
[.19 .15 .64]
[.23 .16 .60]
.....
]
testy
是一个热编码,它的值是这样的
[
[1 0 0]
[0 0 1]
[0 0 1]
]
预测值如何 testy
或如何将预测值转换为一个热编码?
注意:我的模型看起来像这样
# setup the model, add layers
model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(classes, activation='softmax'))
# compile model
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adadelta(), metrics=['accuracy'])
# fit the model
model.fit(trainx, trainy, batch_size=batch_size, epochs=iterations, verbose=1, validation_data=(testx, testy))
原文由 asdfkjasdfjk 发布,翻译遵循 CC BY-SA 4.0 许可协议
返回的值是每个类别的概率。这些值可能很有用,因为它们指示模型的置信水平。
如果您只对概率最高的类别感兴趣:
例如
[.19 .15 .64]
=2
(因为列表中的索引 2 最大)让模特去吧
Tensorflow 模型有一个内置方法,可以返回最高类别概率的索引。
手动做
argmax 是一个通用函数,用于返回序列中最高值的索引。