2016-07-13 13 views
0

Ich versuche, ein LeNet auf meine eigenen Daten (37 von 37 Graustufenbilder von 1024 Kategorien) zu trainieren.Caffe hängt nach dem Drucken von Daten -> Label

habe ich die LMDB Dateien und verändert die Größe der ouput Schicht zu 1024. Als ich die caffe train mit meiner Solver-Datei lief, wurde das Programm stecken nach

... 
layer { 
    name: "loss" 
    type: "SoftmaxWithLoss" 
    bottom: "score" 
    bottom: "label" 
    top: "loss" 
} 
I0713 17:11:13.334890 9595 layer_factory.hpp:77] Creating layer data 
I0713 17:11:13.334939 9595 net.cpp:91] Creating Layer data 
I0713 17:11:13.334950 9595 net.cpp:399] data -> data 
I0713 17:11:13.334961 9595 net.cpp:399] data -> label 

Drucken Was möglicherweise das Problem sein könnte ?
Ich bin neu mit Caffe, jede Hilfe wird geschätzt.


solver.prototxt

net: "lenet_auto_train.prototxt" 
test_iter: 100 
test_interval: 500 
base_lr: 0.01 
momentum: 0.9 
weight_decay: 0.0005 
lr_policy: "inv" 
gamma: 0.0001 
power: 0.75 
display: 100 
max_iter: 10000 
snapshot: 5000 
snapshot_prefix: "lenet" 

lenet.prototxt

layer { 
    name: "data" 
    type: "Data" 
    top: "data" 
    top: "label" 
    transform_param { 
    scale: 0.00392156862745 
    } 
    data_param { 
    source: "dir/dat/1024_37*37_gray_lmdb" 
    batch_size: 64 
    backend: LMDB 
    } 
} 
layer { 
    name: "conv1" 
    type: "Convolution" 
    bottom: "data" 
    top: "conv1" 
    convolution_param { 
    num_output: 20 
    kernel_size: 5 
    weight_filler { 
     type: "xavier" 
    } 
    } 
} 
layer { 
    name: "pool1" 
    type: "Pooling" 
    bottom: "conv1" 
    top: "pool1" 
    pooling_param { 
    pool: MAX 
    kernel_size: 2 
    stride: 2 
    } 
} 
layer { 
    name: "conv2" 
    type: "Convolution" 
    bottom: "pool1" 
    top: "conv2" 
    convolution_param { 
    num_output: 50 
    kernel_size: 5 
    weight_filler { 
     type: "xavier" 
    } 
    } 
} 
layer { 
    name: "pool2" 
    type: "Pooling" 
    bottom: "conv2" 
    top: "pool2" 
    pooling_param { 
    pool: MAX 
    kernel_size: 2 
    stride: 2 
    } 
} 
layer { 
    name: "fc1" 
    type: "InnerProduct" 
    bottom: "pool2" 
    top: "fc1" 
    inner_product_param { 
    num_output: 500 
    weight_filler { 
     type: "xavier" 
    } 
    } 
} 
layer { 
    name: "relu1" 
    type: "ReLU" 
    bottom: "fc1" 
    top: "fc1" 
} 
layer { 
    name: "score" 
    type: "InnerProduct" 
    bottom: "fc1" 
    top: "score" 
    inner_product_param { 
    num_output: 1024 
    weight_filler { 
     type: "xavier" 
    } 
    } 
} 
layer { 
    name: "loss" 
    type: "SoftmaxWithLoss" 
    bottom: "score" 
    bottom: "label" 
    top: "loss" 
} 

Antwort

1

Das Problem ist, habe ich die Optionen test_iter: 100 und test_interval: 500 in der Solver-Datei, aber ich habe nicht angegeben ein Testnetzwerk oder eine Testdatenschicht in der Netzwerkdatei.

+0

in Erwägung ziehen, Ihre eigene Antwort zu akzeptieren, um sie für zukünftige Referenz zu markieren. – Shai

1

Es scheint wie caffe der LMDB zu lesen versucht, und trifft dann ein Problem.
Meine Vermutung ist, dass Ihr DB-Name "dir/dat/1024_37*37_gray_lmdb" das Problem verursacht: "*" Zeichen im Dateinamen ist keine gute Praxis.
Ändern Sie den db Namen so etwas wie "dir/dat/1024_37x37_gray_lmdb" und versuchen Sie es erneut (nicht zu vergessen die prototxt als auch zu ändern)

+0

Danke für die Beantwortung, ich habe das Problem gefunden, es ist, weil ich 'test_iter: 100' geschrieben habe, während ich kein Testnetzwerk oder Daten hatte. – dontloo

2

In meinem Fall passierte dies, wenn dieselbe LMDB für Zug und Test verwendet wurde.