Я совершенно новый в кафе и в глубоком обучении. Я просто пытаюсь внедрить архитектуру глубокого обучения. Внедрение архитектуры глубокого обучения с данным набором данных
Это архитектура, которую я пытаюсь реализовать. Архитектура и набор данных Parse27k были созданы и построены Группа компьютерного зрения в Visual Computing Institute, RWTH Aachen University.
Ниже вы можете увидеть мои модели, которые мне нужно улучшить:
Train_val.prototxt
name: "Parse27"
layer {
name: "data"
type: "HDF5Data"
top: "crops"
top: "labels"
include {
phase: TRAIN
}
hdf5_data_param {
source: "/home/nail/caffe/caffe/examples/hdf5_classification/data/train.txt"
batch_size: 256
}
}
layer {
name: "data"
type: "HDF5Data"
top: "crops"
top: "labels"
include {
phase: TEST
}
hdf5_data_param {
source: "/home/nail/caffe/caffe/examples/hdf5_classification/data/test.txt"
batch_size: 256
}
}
layer {
name: "conv1"
type: "Convolution"
bottom: "crops"
top: "conv1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 11
stride: 4
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "relu1"
type: "ReLU"
bottom: "conv1"
top: "conv1"
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "norm1"
type: "LRN"
bottom: "pool1"
top: "norm1"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "conv2"
type: "Convolution"
bottom: "norm1"
top: "conv2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
pad: 2
kernel_size: 5
group: 2
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 1
}
}
}
layer {
name: "relu2"
type: "ReLU"
bottom: "conv2"
top: "conv2"
}
layer {
name: "pool2"
type: "Pooling"
bottom: "conv2"
top: "pool2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "norm2"
type: "LRN"
bottom: "pool2"
top: "norm2"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "conv3"
type: "Convolution"
bottom: "norm2"
top: "conv3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 384
pad: 1
kernel_size: 3
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "relu3"
type: "ReLU"
bottom: "conv3"
top: "conv3"
}
layer {
name: "conv4"
type: "Convolution"
bottom: "conv3"
top: "conv4"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 384
pad: 1
kernel_size: 3
group: 2
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 1
}
}
}
layer {
name: "relu4"
type: "ReLU"
bottom: "conv4"
top: "conv4"
}
layer {
name: "conv5"
type: "Convolution"
bottom: "conv4"
top: "conv5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
group: 2
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 1
}
}
}
layer {
name: "relu5"
type: "ReLU"
bottom: "conv5"
top: "conv5"
}
layer {
name: "pool5"
type: "Pooling"
bottom: "conv5"
top: "pool5"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "fc6"
type: "InnerProduct"
bottom: "pool5"
top: "fc6"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 4096
weight_filler {
type: "gaussian"
std: 0.005
}
bias_filler {
type: "constant"
value: 1
}
}
}
layer {
name: "relu6"
type: "ReLU"
bottom: "fc6"
top: "fc6"
}
layer {
name: "drop6"
type: "Dropout"
bottom: "fc6"
top: "fc6"
dropout_param {
dropout_ratio: 0.5
}
}
layer {
name: "fc7"
type: "InnerProduct"
bottom: "fc6"
top: "fc7"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 4096
weight_filler {
type: "gaussian"
std: 0.005
}
bias_filler {
type: "constant"
value: 1
}
}
}
layer {
name: "relu7"
type: "ReLU"
bottom: "fc7"
top: "fc7"
}
layer {
name: "drop7"
type: "Dropout"
bottom: "fc7"
top: "fc7"
dropout_param {
dropout_ratio: 0.5
}
}
layer {
name: "fc8"
type: "InnerProduct"
bottom: "fc7"
top: "fc8"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 1000
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "accuracy"
type: "Accuracy"
bottom: "fc8"
bottom: "labels"
top: "accuracy"
include {
phase: TEST
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc8"
bottom: "labels"
top: "loss"
}
Solver.prototxt
net: "models/Parse27/train_val.prototxt"
test_iter: 1000
test_interval: 1000
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 20
max_iter: 450000
momentum: 0.9
weight_decay: 0.0005
snapshot: 10000
snapshot_prefix: "models/Parse27/Parse27_train"
solver_mode: GPU
У меня есть 2 основные трудности в реализации этой архитектуры.
Как видно выше, моя модель не включает слой пользовательских потерь. Моя модель - почти архитектура caffeNet. Но я должен заменить свой последний слой, который находится внутри красного ящика с пользовательским слоем потерь (зеленый квадрат).
Мой набор данных поезда имеет следующую структуру.
crops Dataset {27482, 3, 128, 192} labels Dataset {27482, 12} mean Dataset {3, 128, 192} pids Dataset {27482}
Как видно здесь количество строк (примеры) в посевах и в метках такого же 27482. Однако у меня есть 12 столбцов в моих наборах данных этикеток. И моя модель работает, когда есть только 1 ярлык. Как я могу заставить его тренироваться для всех лейблов?
Моя модель в Train_val.prototxt выглядит как это сейчас:
Любой вид помощи или предложения будут высоко оценены.
Я получаю такое сообщение об ошибке, когда выполняю его F1101 14: 11: 12.764832 7023 layer.hpp: 374] Check failed: ExactNumBottomBlobs() == bottom.size() (2 против 13) Точность слоя принимает в качестве входного сигнала 2 нижних блока (блоков). Я даже попытался отправить только один из атрибутов на потерю и fc8 по-прежнему той же ошибкой. ссылка на изображение https://postimg.org/image/3yh66h8fp/ модель prototxt документ http://codepad.org/GfsLcWqn – MIRMIX
@MIRMIX посмотреть на модели, публикуемую: https: //i.stack.imgur .com/B7Cmq.png. Как вы можете видеть, у вас есть ** другой уровень потери (и точности) ** для каждого атрибута.У вас не может быть одного слоя для всех атрибутов. Работайте в соответствии с планом, который вы пытаетесь реализовать. – Shai
Я получил его, но все еще, как я упоминал, даже когда я пытаюсь сделать это для одного атрибута, он снова получает сообщение об ошибке. https://postimg.org/image/xrqzhgzz7/ Должен ли он работать хотя бы на один ярлык? – MIRMIX