李桂宏
李桂宏

Reputation: 21

Caffe ImageData neural network basic example fails to parse the model file

I am trying to build a minimal example of a neural network with IMAGE DATA that I have prepared from a CSV file using the caffe libraries.

My prototext is as follows: [wine_train.prototxt]

name:"wineclass"
layers {    
  name: "data"
  type: "IMAGEDATA"
  top: "data"
  top: "label"
  image_data_param {
    source: "examples/wine/test.txt"
    batch_size: 10
  }
  include{
   phase:TEST
  }
}
layer {
  name: "data"
  type: "IMAGEDATA"
  top: "label"
  top: "label"
  image_data_param {
    source: "examples/wine/train.txt"
    batch_size: 2
  }
  include{
   phase:TRAIN
  }
}
layers {
  name: "ip"
  type: "INNER_PRODUCT"
  bottom: "data"
  top: "ip"
  inner_product_param {
    num_output: 3
  }
}
layers {
  name: "loss"
  type: "SOFTMAX_LOSS"
  bottom: "ip"
  bottom: "label"
  top: "loss"
}
layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "ip"
  bottom: "label"
  top: "accuracy"
  include {
    phase: TEST
  }
}

and my solver is as follows:

net: "examples/wine/wine_train.prototxt"
test_iter: 250
test_interval: 1000
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 5000
display: 1000
max_iter: 10000
momentum: 0.9
weight_decay: 0.0005
snapshot: 10000
snapshot_prefix: "wine/train"
solver_mode: CPU

Each time I get the following error:

LIGH@IVIP2:~/caffe$ build/tools/caffe train -model '/home/shaunak/caffe/examples/wine/wine_train.prototxt' -solver '/home/shaunak/caffe/examples/wine/solver.prototxt'
I0415 04:31:00.154145 57047 caffe.cpp:117] Use CPU.
I0415 04:31:00.154485 57047 caffe.cpp:121] Starting Optimization
I0415 04:31:00.154552 57047 solver.cpp:32] Initializing solver from parameters:
test_iter: 250
test_interval: 1000
base_lr: 0.01
display: 1000
max_iter: 10000
lr_policy: "step"
gamma: 0.1
momentum: 0.9
weight_decay: 0.0005
stepsize: 5000
snapshot: 10000
snapshot_prefix: "wine/train"
solver_mode: CPU
net: "examples/wine/wine_train.prototxt"
I0415 04:31:00.154660 57047 solver.cpp:79] Creating training net from net file: examples/wine/wine_train.prototxt
[libprotobuf ERROR google/protobuf/text_format.cc:245] Error parsing text-format caffe.NetParameter: 4:9: Expected integer or identifier.
F0415 04:31:00.154774 57047 upgrade_proto.cpp:928] Check failed: ReadProtoFromTextFile(param_file, param) Failed to parse NetParameter file: examples/wine/wine_train.prototxt
*** Check failure stack trace: ***
    @     0x7f4a30766c3c  google::LogMessage::Fail()
    @     0x7f4a30766b88  google::LogMessage::SendToLog()
    @     0x7f4a3076658a  google::LogMessage::Flush()
    @     0x7f4a30769521  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f4a30b8b1ee  caffe::ReadNetParamsFromTextFileOrDie()
    @     0x7f4a30b6dfa2  caffe::Solver<>::InitTrainNet()
    @     0x7f4a30b6ee63  caffe::Solver<>::Init()
    @     0x7f4a30b6f036  caffe::Solver<>::Solver()
    @           0x40c3c0  caffe::GetSolver<>()
    @           0x406361  train()
    @           0x4048f1  main
    @     0x7f4a2fe86ec5  (unknown)
    @           0x404e9d  (unknown)
Aborted (core dumped)
LIGH@IVIP2:~/caffe$

What exactly does the error say and how do I resolve it?

Upvotes: 2

Views: 409

Answers (1)

Shai
Shai

Reputation: 114826

Your 'wine_train.prototxt' has a problematic format. It mixes old format (i.e., layers instead of layer, layer types in all capitals) and new format (i.e., layer types as string and not as enumerations).
Remove the quotation marks (") from the layer types and run $CAFFE_ROOT/build/tools/upgrade_net_proto_text.binto get an upgraded net prototxt.

Additionally, you do not need (and probably should not) provide -model argument when running caffe train. This argument is used when running caffe test. The model file is defined in the solver.prototxt.

Upvotes: 1

Related Questions