WedX - журнал о программировании и компьютерных науках

Caffe: Распечатать оценку softmax

В данном примере MNIST в установке Caffe.

Как для любого заданного тестового изображения получить оценки softmax для каждой категории и выполнить некоторую обработку? Скажем, вычислите их среднее значение и дисперсию.

Я новичок, поэтому деталь мне очень поможет. Я могу обучить модель и использовать функцию тестирования, чтобы получить прогноз, но я не уверен, какие файлы нужно редактировать, чтобы получить вышеуказанные результаты.

15.06.2017

  • как твои навыки в питоне? 15.06.2017
  • Я бы сказал, как минимум на уровне бакалавриата. 15.06.2017
  • затем используйте интерфейс Python с deploy.prototxt, и вы можете делать с выводами все, что хотите. 15.06.2017
  • @Shai Можете ли вы указать какой-нибудь пример? 15.06.2017

Ответы:


1

Вы можете использовать интерфейс Python

import caffe
net = caffe.Net('/path/to/deploy.prototxt', '/path/to/weights.caffemodel', caffe.TEST)
in_ = read_data(...) # this is up to you to read a sample and convert it to numpy array
out_ = net.forward(data=in_) # assuming your net expects "data" in blob

Теперь у вас есть вывод вашей сети в словаре out (ключи — это имена выходных BLOB-объектов). Вы можете запустить его в цикле на нескольких примерах и т.д.

15.06.2017

2

Могу попробовать ответить на ваш вопрос. Предполагая, что в вашей сети развертывания слой 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
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]