Я использую torch-caffe-binding для преобразования модели кафе в torch. И я хочу в конце удалить слой потерь и добавить другие слои с факелами, могу ли я просто удалить слой в файле .prototxt
и обучить модель получать файл .caffemodel
и импортировать его в факел?
И модель использует Данные типа lmdb, когда я использую net:forward(input)
для обучения модели, модель просто использует данные, определенные на уровне данных, вместо использования input
data. Итак, как обучить модель, которая использует данные lmdb?
модель caffe имеет некоторый настраиваемый слой, поэтому я не могу использовать loadcaffe
для загрузки модели в torch
Некоторые вопросы по преобразованию модели кафе в факел
Ответы (1)
У вас здесь 3 проблемы -
- Вероятно, вам понадобится слой потерь для обучения (это то, что вы хотите минимизировать). Так что тренируйтесь с ним, и после того, как обучение будет завершено, удалите его из своего прототипа перед преобразованием в torch.
Чтобы использовать lmdb вместо уровня данных, подключите свой ввод к первому сверточному слою (при условии, что ваш первый не входной слой является conv, например, скажем, у вас есть
layer { name: "input-data" type: "DummyData" top: "data" top: "im_info" dummy_data_param { shape { dim: 1 dim: 3 dim: 224 dim: 224 } } }
а также
input: "data" input_shape: { dim: 1 dim: 3 dim: 224 dim: 224 }
а потом
layer { name: "conv1" type: "Convolution" bottom: "data" --> **here put data instead of input-data** top: "conv1" convolution_param { num_output: 96 kernel_size: 3 pad: 1 stride: 1 } }
- Что касается настраиваемого слоя, вам придется найти эквивалентную реализацию в torch или реализовать ее самостоятельно.
person
rkellerm
schedule
18.09.2017
когда я удаляю слой потерь в протоколе, консоль показывает следующее:
I0923 20:56:19.437440 23288 net.cpp:200] conv1 does not need backward computation.
все слои имеют сообщение о сохранении. и я не могу использовать torch для его обучения. Когда я добавляю слой потерь, все идет правильно, как я могу удалить слой потерь, в то время как все слои нуждаются в обратном? Заранее спасибо.
- person SiMen.StrEak; 23.09.2017
я нашел, как это решить, просто добавьте
loss_weight: 1
в последний слой. спасибо за вашу помощь
- person SiMen.StrEak; 23.09.2017
когда я использую
net = caffe.Net('test.prototxt','test.caffemodel','train')
и net:getParameters()
для получения netGradParameters
. но я получаю [torch.DoubleTensor with no dimension]
, и я не могу тренировать его в Torch. Итак, если модель кафе не может тренироваться в Torch или я использую неправильный способ обучения?
- person SiMen.StrEak; 24.09.2017