Я пытаюсь провести пиксельную классификацию с помощью caffe, поэтому необходимо предоставить базовое истинное изображение размером с входное изображение.Есть несколько способов сделать это, и я решил настроить свой вход как 4-канальная LMDB (согласно 2-му пункту этого ответа ).Это требует, чтобы я добавил слой Slice
после ввода, что также указано в тот же ответ .
Я продолжаю получать Unknown blob input data_lmdb to layer 0
как сообщение об ошибке (data_lmdb
должен быть моим самым нижним входным слоем).Я обнаружил, что ошибка unknown blob
(будь то верхняя или нижняя) в основном вызвана тем, что вы забыли определить что-то на одном из этапов TRAIN / TEST при определении этого на другом (например, этот вопрос или этот ).Но я использую комбинацию файлов train.prototxt
, inference.prototxt
и solver.prototxt
, которые я использовал ранее, просто заменяя входные слои с HD5 на LMDB (для практики), поэтому все должно быть определено.
Кто-нибудь может понять, почему я получаю ошибку Unknown blob input data_lmdb to layer 0
?Из файлов журнала поезда я вижу, что он падает, как только читает файл train.prototxt
(он даже не достигает части Creating layer
).
Мои файлы prototxt
выглядят следующим образом:
solver.prototxt
net: "train.prototxt" # Change this to the absolute path to your model file
test_initialization: false
test_iter: 1
test_interval: 1000000
base_lr: 0.01
lr_policy: "fixed"
gamma: 1.0
stepsize: 2000
display: 20
momentum: 0.9
max_iter: 10000
weight_decay: 0.0005
snapshot: 100
snapshot_prefix: "set_snapshot_name" # Absolute path to output solver snapshots
solver_mode: GPU
train.prototxt
(только первые два слоя; за ними следует слой нормализации LNR
, а затем слой Convolution
):
name: "my_net"
layer {
name: "data_lmdb"
type: "Data"
top: "slice_input"
data_param {
source: "data/train"
batch_size: 4
backend: LMDB
}
}
layer{
name: "slice_input"
type: "Slice"
bottom: "data_lmdb" # 4-channels = rgb+truth
top: "data"
top: "label"
slice_param {
axis: 1
slice_point: 3
}
}
Первые несколько определений слоев в inference.prototxt
идентичны train.prototxt
(что в любом случае не должно иметь значения, так как они не используются в обучении), за исключением следующего:
- в
data_lmdb
путь источника отличается (data/test
) - в
data_lmdb
слой использует batch_size: 1
Пожалуйста, дайте мне знать, если мне нужновключить больше информации или слоев.Я пытался держать это вкратце, что в итоге не сработало.