Могу попробовать ответить на ваш вопрос. Предполагая, что в вашей сети развертывания слой softmax выглядит следующим образом:
layer {
name: "prob"
type : "Softmax"
bottom: "fc6"
top: "prob"
}
В вашем коде Python, который обрабатывает данные, в сочетании с предоставленным кодом @Shai, вы можете получить вероятность каждой категории, добавив код, основанный на коде @Shai:
predicted_prob = net.blobs['prob'].data
predicted_prob будет возвращен массив, содержащий вероятности со всеми категориями.
Например, если у вас есть только две категории, predicted_prob[0][0]
будет вероятностью того, что данные тестирования принадлежат одной категории, а predicted_prob[0][1]
будет вероятностью другой.
PS:
Если вы не хотите писать какой-либо дополнительный скрипт Python, в соответствии с https://github.com/BVLC/caffe/tree/master/examples/mnist говорится, что этот пример будет автоматически выполнять тестирование каждые 500 итераций. «500» определяется в решателе, например https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet_solver.prototxt
Поэтому вам нужно отследить исходный код caffe, который обрабатывает файл решателя. Я думаю, это должно быть https://github.com/BVLC/caffe/blob/master/src/caffe/solver.cpp
Я не уверен, что Solver.cpp - это правильный файл, на который вам нужно смотреть. Но в этом файле вы можете видеть, что он имеет функции тестирования и расчета некоторых значений. Я надеюсь, что это может дать вам некоторые идеи, если никто другой не может ответить на ваш вопрос.
15.06.2017