У меня есть fully connected layer
с слоем SoftmaxWithLoss
. Я пытаюсь получить данные в форме 3D
, а не 1D
. Мое входное ground_truth изображения 3x128x128 и мои последние слои выглядят следующим образом:caffe: преобразование полностью подключенного уровня к 3D данным
layer {
name: "fc1"
type: "InnerProduct"
bottom: "conv"
top: "fc1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 49152 # 128 x 128 x 3
...
}
}
layer {
name: "result"
type: "SoftmaxWithLoss"
bottom: "fc1"
bottom: "label"
top: "result"
}
И вот я получаю следующее сообщение об ошибке:
softmax_loss_layer.cpp:47] Check failed: outer_num_ * inner_num_ == bottom[1]->count() (1 vs. 49152) Number of labels must match number of predictions; e.g., if softmax axis == 1 and prediction shape is (N, C, H, W), label count (number of labels) must be NHW, with integer values in {0, 1, ..., C-1}.
Что здесь не так? У меня есть мой ярлык, который равен 3x128x128, а мой output_num - 49152 = 3 x 128 x128 ??
Моя следить за вопрос будет, как преобразовать эти данные в 1D 3D данных:
Я использую Python API для CAFFE. Я знаю, что мне просто нужно изменить вектор 1D на 3D-вектор. Но откуда я могу узнать, где «изменить форму», когда местоположение в 1D-векторе соответствует местоположению в 3D-векторе. Может кто-нибудь мне помочь?
Заранее благодарен!
Благодарим вас за ответ. Причина, по которой я ответил на этот вопрос, заключается в том, что я не смог получить достаточно хорошие результаты с заданием регрессии, как описано [link] (http://stackoverflow.com/questions/40588551/caffe-how-to-convert-network от-пиксель-мудрый-сегментация-к-пиксель-мудрый-регресс? noredirect = 1 # comment68451095_40588551) здесь. В будущем мне нужно иметь 3D-выход, т. Е. По меньшей мере 2 канала x height x width. Не могли бы вы взглянуть на этот вопрос? Это было бы очень полезно – thigi
Что я не понимаю, это то, что вы подразумеваете под изменением формата ярлыков? Это будет то же самое для регрессии и softmax, где у меня есть изображение со значениями от [0, 255], что бы изменилось? – thigi
Какая разница между использованием слоя свертки как последнего слоя, а не 'innerProduct'. Потому что, когда я использую «сверточный» слой, я получу 2D-выход, который является идеальным, поскольку мне не нужно его изменять. – thigi