file models
authorEvan Shelhamer <shelhamer@imaginarynumber.net>
Tue, 25 Feb 2014 07:43:47 +0000 (23:43 -0800)
committerEvan Shelhamer <shelhamer@imaginarynumber.net>
Wed, 26 Feb 2014 20:37:45 +0000 (12:37 -0800)
14 files changed:
examples/imagenet.prototxt [deleted file]
examples/imagenet_deploy.prototxt [deleted file]
examples/imagenet_solver.prototxt [deleted file]
examples/imagenet_val.prototxt [deleted file]
examples/lenet.prototxt [deleted file]
examples/lenet_solver.prototxt [deleted file]
examples/lenet_test.prototxt [deleted file]
models/imagenet.prototxt [new file with mode: 0644]
models/imagenet_deploy.prototxt [new file with mode: 0644]
models/imagenet_solver.prototxt [new file with mode: 0644]
models/imagenet_val.prototxt [new file with mode: 0644]
models/lenet.prototxt [new file with mode: 0644]
models/lenet_solver.prototxt [new file with mode: 0644]
models/lenet_test.prototxt [new file with mode: 0644]

diff --git a/examples/imagenet.prototxt b/examples/imagenet.prototxt
deleted file mode 100644 (file)
index 5db585b..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-name: "CaffeNet"
-layers {
-  layer {
-    name: "data"
-    type: "data"
-    source: "/home/jiayq/Data/ILSVRC12/train-leveldb"
-    meanfile: "/home/jiayq/Data/ILSVRC12/image_mean.binaryproto"
-    batchsize: 256
-    cropsize: 227
-    mirror: true
-  }
-  top: "data"
-  top: "label"
-}
-layers {
-  layer {
-    name: "conv1"
-    type: "conv"
-    num_output: 96
-    kernelsize: 11
-    stride: 4
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 0.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "data"
-  top: "conv1"
-}
-layers {
-  layer {
-    name: "relu1"
-    type: "relu"
-  }
-  bottom: "conv1"
-  top: "conv1"
-}
-layers {
-  layer {
-    name: "pool1"
-    type: "pool"
-    pool: MAX
-    kernelsize: 3
-    stride: 2
-  }
-  bottom: "conv1"
-  top: "pool1"
-}
-layers {
-  layer {
-    name: "norm1"
-    type: "lrn"
-    local_size: 5
-    alpha: 0.0001
-    beta: 0.75
-  }
-  bottom: "pool1"
-  top: "norm1"
-}
-layers {
-  layer {
-    name: "pad2"
-    type: "padding"
-    pad: 2
-  }
-  bottom: "norm1"
-  top: "pad2"
-}
-layers {
-  layer {
-    name: "conv2"
-    type: "conv"
-    num_output: 256
-    group: 2
-    kernelsize: 5
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pad2"
-  top: "conv2"
-}
-layers {
-  layer {
-    name: "relu2"
-    type: "relu"
-  }
-  bottom: "conv2"
-  top: "conv2"
-}
-layers {
-  layer {
-    name: "pool2"
-    type: "pool"
-    pool: MAX
-    kernelsize: 3
-    stride: 2
-  }
-  bottom: "conv2"
-  top: "pool2"
-}
-layers {
-  layer {
-    name: "norm2"
-    type: "lrn"
-    local_size: 5
-    alpha: 0.0001
-    beta: 0.75
-  }
-  bottom: "pool2"
-  top: "norm2"
-}
-layers {
-  layer {
-    name: "pad3"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "norm2"
-  top: "pad3"
-}
-layers {
-  layer {
-    name: "conv3"
-    type: "conv"
-    num_output: 384
-    kernelsize: 3
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 0.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pad3"
-  top: "conv3"
-}
-layers {
-  layer {
-    name: "relu3"
-    type: "relu"
-  }
-  bottom: "conv3"
-  top: "conv3"
-}
-layers {
-  layer {
-    name: "pad4"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "conv3"
-  top: "pad4"
-}
-layers {
-  layer {
-    name: "conv4"
-    type: "conv"
-    num_output: 384
-    group: 2
-    kernelsize: 3
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pad4"
-  top: "conv4"
-}
-layers {
-  layer {
-    name: "relu4"
-    type: "relu"
-  }
-  bottom: "conv4"
-  top: "conv4"
-}
-layers {
-  layer {
-    name: "pad5"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "conv4"
-  top: "pad5"
-}
-layers {
-  layer {
-    name: "conv5"
-    type: "conv"
-    num_output: 256
-    group: 2
-    kernelsize: 3
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pad5"
-  top: "conv5"
-}
-layers {
-  layer {
-    name: "relu5"
-    type: "relu"
-  }
-  bottom: "conv5"
-  top: "conv5"
-}
-layers {
-  layer {
-    name: "pool5"
-    type: "pool"
-    kernelsize: 3
-    pool: MAX
-    stride: 2
-  }
-  bottom: "conv5"
-  top: "pool5"
-}
-layers {
-  layer {
-    name: "fc6"
-    type: "innerproduct"
-    num_output: 4096
-    weight_filler {
-      type: "gaussian"
-      std: 0.005
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pool5"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "relu6"
-    type: "relu"
-  }
-  bottom: "fc6"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "drop6"
-    type: "dropout"
-    dropout_ratio: 0.5
-  }
-  bottom: "fc6"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "fc7"
-    type: "innerproduct"
-    num_output: 4096
-    weight_filler {
-      type: "gaussian"
-      std: 0.005
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "fc6"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "relu7"
-    type: "relu"
-  }
-  bottom: "fc7"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "drop7"
-    type: "dropout"
-    dropout_ratio: 0.5
-  }
-  bottom: "fc7"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "fc8"
-    type: "innerproduct"
-    num_output: 1000
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 0
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "fc7"
-  top: "fc8"
-}
-layers {
-  layer {
-    name: "loss"
-    type: "softmax_loss"
-  }
-  bottom: "fc8"
-  bottom: "label"
-}
diff --git a/examples/imagenet_deploy.prototxt b/examples/imagenet_deploy.prototxt
deleted file mode 100644 (file)
index 6257914..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-input: "data"
-input_dim: 10
-input_dim: 3
-input_dim: 227
-input_dim: 227
-layers {
-  layer {
-    name: "conv1"
-    type: "conv"
-    num_output: 96
-    kernelsize: 11
-    stride: 4
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 0.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "data"
-  top: "conv1"
-}
-layers {
-  layer {
-    name: "relu1"
-    type: "relu"
-  }
-  bottom: "conv1"
-  top: "conv1"
-}
-layers {
-  layer {
-    name: "pool1"
-    type: "pool"
-    pool: MAX
-    kernelsize: 3
-    stride: 2
-  }
-  bottom: "conv1"
-  top: "pool1"
-}
-layers {
-  layer {
-    name: "norm1"
-    type: "lrn"
-    local_size: 5
-    alpha: 0.0001
-    beta: 0.75
-  }
-  bottom: "pool1"
-  top: "norm1"
-}
-layers {
-  layer {
-    name: "pad2"
-    type: "padding"
-    pad: 2
-  }
-  bottom: "norm1"
-  top: "pad2"
-}
-layers {
-  layer {
-    name: "conv2"
-    type: "conv"
-    num_output: 256
-    group: 2
-    kernelsize: 5
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pad2"
-  top: "conv2"
-}
-layers {
-  layer {
-    name: "relu2"
-    type: "relu"
-  }
-  bottom: "conv2"
-  top: "conv2"
-}
-layers {
-  layer {
-    name: "pool2"
-    type: "pool"
-    pool: MAX
-    kernelsize: 3
-    stride: 2
-  }
-  bottom: "conv2"
-  top: "pool2"
-}
-layers {
-  layer {
-    name: "norm2"
-    type: "lrn"
-    local_size: 5
-    alpha: 0.0001
-    beta: 0.75
-  }
-  bottom: "pool2"
-  top: "norm2"
-}
-layers {
-  layer {
-    name: "pad3"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "norm2"
-  top: "pad3"
-}
-layers {
-  layer {
-    name: "conv3"
-    type: "conv"
-    num_output: 384
-    kernelsize: 3
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 0.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pad3"
-  top: "conv3"
-}
-layers {
-  layer {
-    name: "relu3"
-    type: "relu"
-  }
-  bottom: "conv3"
-  top: "conv3"
-}
-layers {
-  layer {
-    name: "pad4"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "conv3"
-  top: "pad4"
-}
-layers {
-  layer {
-    name: "conv4"
-    type: "conv"
-    num_output: 384
-    group: 2
-    kernelsize: 3
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pad4"
-  top: "conv4"
-}
-layers {
-  layer {
-    name: "relu4"
-    type: "relu"
-  }
-  bottom: "conv4"
-  top: "conv4"
-}
-layers {
-  layer {
-    name: "pad5"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "conv4"
-  top: "pad5"
-}
-layers {
-  layer {
-    name: "conv5"
-    type: "conv"
-    num_output: 256
-    group: 2
-    kernelsize: 3
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pad5"
-  top: "conv5"
-}
-layers {
-  layer {
-    name: "relu5"
-    type: "relu"
-  }
-  bottom: "conv5"
-  top: "conv5"
-}
-layers {
-  layer {
-    name: "pool5"
-    type: "pool"
-    kernelsize: 3
-    pool: MAX
-    stride: 2
-  }
-  bottom: "conv5"
-  top: "pool5"
-}
-layers {
-  layer {
-    name: "fc6"
-    type: "innerproduct"
-    num_output: 4096
-    weight_filler {
-      type: "gaussian"
-      std: 0.005
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "pool5"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "relu6"
-    type: "relu"
-  }
-  bottom: "fc6"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "drop6"
-    type: "dropout"
-    dropout_ratio: 0.5
-  }
-  bottom: "fc6"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "fc7"
-    type: "innerproduct"
-    num_output: 4096
-    weight_filler {
-      type: "gaussian"
-      std: 0.005
-    }
-    bias_filler {
-      type: "constant"
-      value: 1.
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "fc6"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "relu7"
-    type: "relu"
-  }
-  bottom: "fc7"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "drop7"
-    type: "dropout"
-    dropout_ratio: 0.5
-  }
-  bottom: "fc7"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "fc8"
-    type: "innerproduct"
-    num_output: 1000
-    weight_filler {
-      type: "gaussian"
-      std: 0.01
-    }
-    bias_filler {
-      type: "constant"
-      value: 0
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-    weight_decay: 1.
-    weight_decay: 0.
-  }
-  bottom: "fc7"
-  top: "fc8"
-}
-layers {
-  layer {
-    name: "prob"
-    type: "softmax"
-  }
-  bottom: "fc8"
-  top: "prob"
-}
diff --git a/examples/imagenet_solver.prototxt b/examples/imagenet_solver.prototxt
deleted file mode 100644 (file)
index 7921d32..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-train_net: "examples/imagenet.prototxt"
-test_net: "examples/imagenet_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: "caffe_imagenet_train"
diff --git a/examples/imagenet_val.prototxt b/examples/imagenet_val.prototxt
deleted file mode 100644 (file)
index fbc4c32..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-name: "CaffeNet"
-layers {
-  layer {
-    name: "data"
-    type: "data"
-    source: "/home/jiayq/Data/ILSVRC12/val-leveldb"
-    meanfile: "/home/jiayq/Data/ILSVRC12/image_mean.binaryproto"
-    batchsize: 50
-    cropsize: 227
-    mirror: false
-  }
-  top: "data"
-  top: "label"
-}
-layers {
-  layer {
-    name: "conv1"
-    type: "conv"
-    num_output: 96
-    kernelsize: 11
-    stride: 4
-  }
-  bottom: "data"
-  top: "conv1"
-}
-layers {
-  layer {
-    name: "relu1"
-    type: "relu"
-  }
-  bottom: "conv1"
-  top: "conv1"
-}
-layers {
-  layer {
-    name: "pool1"
-    type: "pool"
-    pool: MAX
-    kernelsize: 3
-    stride: 2
-  }
-  bottom: "conv1"
-  top: "pool1"
-}
-layers {
-  layer {
-    name: "norm1"
-    type: "lrn"
-    local_size: 5
-    alpha: 0.0001
-    beta: 0.75
-  }
-  bottom: "pool1"
-  top: "norm1"
-}
-layers {
-  layer {
-    name: "pad2"
-    type: "padding"
-    pad: 2
-  }
-  bottom: "norm1"
-  top: "pad2"
-}
-layers {
-  layer {
-    name: "conv2"
-    type: "conv"
-    num_output: 256
-    group: 2
-    kernelsize: 5
-  }
-  bottom: "pad2"
-  top: "conv2"
-}
-layers {
-  layer {
-    name: "relu2"
-    type: "relu"
-  }
-  bottom: "conv2"
-  top: "conv2"
-}
-layers {
-  layer {
-    name: "pool2"
-    type: "pool"
-    pool: MAX
-    kernelsize: 3
-    stride: 2
-  }
-  bottom: "conv2"
-  top: "pool2"
-}
-layers {
-  layer {
-    name: "norm2"
-    type: "lrn"
-    local_size: 5
-    alpha: 0.0001
-    beta: 0.75
-  }
-  bottom: "pool2"
-  top: "norm2"
-}
-layers {
-  layer {
-    name: "pad3"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "norm2"
-  top: "pad3"
-}
-layers {
-  layer {
-    name: "conv3"
-    type: "conv"
-    num_output: 384
-    kernelsize: 3
-  }
-  bottom: "pad3"
-  top: "conv3"
-}
-layers {
-  layer {
-    name: "relu3"
-    type: "relu"
-  }
-  bottom: "conv3"
-  top: "conv3"
-}
-layers {
-  layer {
-    name: "pad4"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "conv3"
-  top: "pad4"
-}
-layers {
-  layer {
-    name: "conv4"
-    type: "conv"
-    num_output: 384
-    group: 2
-    kernelsize: 3
-  }
-  bottom: "pad4"
-  top: "conv4"
-}
-layers {
-  layer {
-    name: "relu4"
-    type: "relu"
-  }
-  bottom: "conv4"
-  top: "conv4"
-}
-layers {
-  layer {
-    name: "pad5"
-    type: "padding"
-    pad: 1
-  }
-  bottom: "conv4"
-  top: "pad5"
-}
-layers {
-  layer {
-    name: "conv5"
-    type: "conv"
-    num_output: 256
-    group: 2
-    kernelsize: 3
-  }
-  bottom: "pad5"
-  top: "conv5"
-}
-layers {
-  layer {
-    name: "relu5"
-    type: "relu"
-  }
-  bottom: "conv5"
-  top: "conv5"
-}
-layers {
-  layer {
-    name: "pool5"
-    type: "pool"
-    kernelsize: 3
-    pool: MAX
-    stride: 2
-  }
-  bottom: "conv5"
-  top: "pool5"
-}
-layers {
-  layer {
-    name: "fc6"
-    type: "innerproduct"
-    num_output: 4096
-  }
-  bottom: "pool5"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "relu6"
-    type: "relu"
-  }
-  bottom: "fc6"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "drop6"
-    type: "dropout"
-    dropout_ratio: 0.5
-  }
-  bottom: "fc6"
-  top: "fc6"
-}
-layers {
-  layer {
-    name: "fc7"
-    type: "innerproduct"
-    num_output: 4096
-  }
-  bottom: "fc6"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "relu7"
-    type: "relu"
-  }
-  bottom: "fc7"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "drop7"
-    type: "dropout"
-    dropout_ratio: 0.5
-  }
-  bottom: "fc7"
-  top: "fc7"
-}
-layers {
-  layer {
-    name: "fc8"
-    type: "innerproduct"
-    num_output: 1000
-  }
-  bottom: "fc7"
-  top: "fc8"
-}
-layers {
-  layer {
-    name: "prob"
-    type: "softmax"
-  }
-  bottom: "fc8"
-  top: "prob"
-}
-layers {
-  layer {
-    name: "accuracy"
-    type: "accuracy"
-  }
-  bottom: "prob"
-  bottom: "label"
-  top: "accuracy"
-}
diff --git a/examples/lenet.prototxt b/examples/lenet.prototxt
deleted file mode 100644 (file)
index e1049f7..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-name: "LeNet"
-layers {
-  layer {
-    name: "mnist"
-    type: "data"
-    source: "../data/mnist-train-leveldb"
-    batchsize: 64
-    scale: 0.00390625
-  }
-  top: "data"
-  top: "label"
-}
-layers {
-  layer {
-    name: "conv1"
-    type: "conv"
-    num_output: 20
-    kernelsize: 5
-    stride: 1
-    weight_filler {
-      type: "xavier"
-    }
-    bias_filler {
-      type: "constant"
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-  }
-  bottom: "data"
-  top: "conv1"
-}
-layers {
-  layer {
-    name: "pool1"
-    type: "pool"
-    kernelsize: 2
-    stride: 2
-    pool: MAX
-  }
-  bottom: "conv1"
-  top: "pool1"
-}
-layers {
-  layer {
-    name: "conv2"
-    type: "conv"
-    num_output: 50
-    kernelsize: 5
-    stride: 1
-    weight_filler {
-      type: "xavier"
-    }
-    bias_filler {
-      type: "constant"
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-  }
-  bottom: "pool1"
-  top: "conv2"
-}
-layers {
-  layer {
-    name: "pool2"
-    type: "pool"
-    kernelsize: 2
-    stride: 2
-    pool: MAX
-  }
-  bottom: "conv2"
-  top: "pool2"
-}
-layers {
-  layer {
-    name: "ip1"
-    type: "innerproduct"
-    num_output: 500
-    weight_filler {
-      type: "xavier"
-    }
-    bias_filler {
-      type: "constant"
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-  }
-  bottom: "pool2"
-  top: "ip1"
-}
-layers {
-  layer {
-    name: "relu1"
-    type: "relu"
-  }
-  bottom: "ip1"
-  top: "ip1"
-}
-layers {
-  layer {
-    name: "ip2"
-    type: "innerproduct"
-    num_output: 10
-    weight_filler {
-      type: "xavier"
-    }
-    bias_filler {
-      type: "constant"
-    }
-    blobs_lr: 1.
-    blobs_lr: 2.
-  }
-  bottom: "ip1"
-  top: "ip2"
-}
-layers {
-  layer {
-    name: "loss"
-    type: "softmax_loss"
-  }
-  bottom: "ip2"
-  bottom: "label"
-}
diff --git a/examples/lenet_solver.prototxt b/examples/lenet_solver.prototxt
deleted file mode 100644 (file)
index d0edc0f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# The training protocol buffer definition
-train_net: "lenet.prototxt"
-# The testing protocol buffer definition
-test_net: "lenet_test.prototxt"
-# test_iter specifies how many forward passes the test should carry out.
-# In the case of MNIST, we have test batch size 100 and 100 test iterations,
-# covering the full 10,000 testing images.
-test_iter: 100
-# Carry out testing every 500 training iterations.
-test_interval: 500
-# The base learning rate, momentum and the weight decay of the network.
-base_lr: 0.01
-momentum: 0.9
-weight_decay: 0.0005
-# The learning rate policy
-lr_policy: "inv"
-gamma: 0.0001
-power: 0.75
-# Display every 100 iterations
-display: 100
-# The maximum number of iterations
-max_iter: 10000
-# snapshot intermediate results
-snapshot: 5000
-snapshot_prefix: "lenet"
-# solver mode: 0 for CPU and 1 for GPU
-solver_mode: 1
diff --git a/examples/lenet_test.prototxt b/examples/lenet_test.prototxt
deleted file mode 100644 (file)
index 38f1a5e..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-name: "LeNet-test"
-layers {
-  layer {
-    name: "mnist"
-    type: "data"
-    source: "../data/mnist-test-leveldb"
-    batchsize: 100
-    scale: 0.00390625
-  }
-  top: "data"
-  top: "label"
-}
-layers {
-  layer {
-    name: "conv1"
-    type: "conv"
-    num_output: 20
-    kernelsize: 5
-    stride: 1
-    weight_filler {
-      type: "xavier"
-    }
-    bias_filler {
-      type: "constant"
-    }
-  }
-  bottom: "data"
-  top: "conv1"
-}
-layers {
-  layer {
-    name: "pool1"
-    type: "pool"
-    kernelsize: 2
-    stride: 2
-    pool: MAX
-  }
-  bottom: "conv1"
-  top: "pool1"
-}
-layers {
-  layer {
-    name: "conv2"
-    type: "conv"
-    num_output: 50
-    kernelsize: 5
-    stride: 1
-    weight_filler {
-      type: "xavier"
-    }
-    bias_filler {
-      type: "constant"
-    }
-  }
-  bottom: "pool1"
-  top: "conv2"
-}
-layers {
-  layer {
-    name: "pool2"
-    type: "pool"
-    kernelsize: 2
-    stride: 2
-    pool: MAX
-  }
-  bottom: "conv2"
-  top: "pool2"
-}
-layers {
-  layer {
-    name: "ip1"
-    type: "innerproduct"
-    num_output: 500
-    weight_filler {
-      type: "xavier"
-    }
-    bias_filler {
-      type: "constant"
-    }
-  }
-  bottom: "pool2"
-  top: "ip1"
-}
-layers {
-  layer {
-    name: "relu1"
-    type: "relu"
-  }
-  bottom: "ip1"
-  top: "ip1"
-}
-layers {
-  layer {
-    name: "ip2"
-    type: "innerproduct"
-    num_output: 10
-    weight_filler {
-      type: "xavier"
-    }
-    bias_filler {
-      type: "constant"
-    }
-  }
-  bottom: "ip1"
-  top: "ip2"
-}
-layers {
-  layer {
-    name: "prob"
-    type: "softmax"
-  }
-  bottom: "ip2"
-  top: "prob"
-}
-layers {
-  layer {
-    name: "accuracy"
-    type: "accuracy"
-  }
-  bottom: "prob"
-  bottom: "label"
-  top: "accuracy"
-}
diff --git a/models/imagenet.prototxt b/models/imagenet.prototxt
new file mode 100644 (file)
index 0000000..5db585b
--- /dev/null
@@ -0,0 +1,364 @@
+name: "CaffeNet"
+layers {
+  layer {
+    name: "data"
+    type: "data"
+    source: "/home/jiayq/Data/ILSVRC12/train-leveldb"
+    meanfile: "/home/jiayq/Data/ILSVRC12/image_mean.binaryproto"
+    batchsize: 256
+    cropsize: 227
+    mirror: true
+  }
+  top: "data"
+  top: "label"
+}
+layers {
+  layer {
+    name: "conv1"
+    type: "conv"
+    num_output: 96
+    kernelsize: 11
+    stride: 4
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 0.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "data"
+  top: "conv1"
+}
+layers {
+  layer {
+    name: "relu1"
+    type: "relu"
+  }
+  bottom: "conv1"
+  top: "conv1"
+}
+layers {
+  layer {
+    name: "pool1"
+    type: "pool"
+    pool: MAX
+    kernelsize: 3
+    stride: 2
+  }
+  bottom: "conv1"
+  top: "pool1"
+}
+layers {
+  layer {
+    name: "norm1"
+    type: "lrn"
+    local_size: 5
+    alpha: 0.0001
+    beta: 0.75
+  }
+  bottom: "pool1"
+  top: "norm1"
+}
+layers {
+  layer {
+    name: "pad2"
+    type: "padding"
+    pad: 2
+  }
+  bottom: "norm1"
+  top: "pad2"
+}
+layers {
+  layer {
+    name: "conv2"
+    type: "conv"
+    num_output: 256
+    group: 2
+    kernelsize: 5
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pad2"
+  top: "conv2"
+}
+layers {
+  layer {
+    name: "relu2"
+    type: "relu"
+  }
+  bottom: "conv2"
+  top: "conv2"
+}
+layers {
+  layer {
+    name: "pool2"
+    type: "pool"
+    pool: MAX
+    kernelsize: 3
+    stride: 2
+  }
+  bottom: "conv2"
+  top: "pool2"
+}
+layers {
+  layer {
+    name: "norm2"
+    type: "lrn"
+    local_size: 5
+    alpha: 0.0001
+    beta: 0.75
+  }
+  bottom: "pool2"
+  top: "norm2"
+}
+layers {
+  layer {
+    name: "pad3"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "norm2"
+  top: "pad3"
+}
+layers {
+  layer {
+    name: "conv3"
+    type: "conv"
+    num_output: 384
+    kernelsize: 3
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 0.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pad3"
+  top: "conv3"
+}
+layers {
+  layer {
+    name: "relu3"
+    type: "relu"
+  }
+  bottom: "conv3"
+  top: "conv3"
+}
+layers {
+  layer {
+    name: "pad4"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "conv3"
+  top: "pad4"
+}
+layers {
+  layer {
+    name: "conv4"
+    type: "conv"
+    num_output: 384
+    group: 2
+    kernelsize: 3
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pad4"
+  top: "conv4"
+}
+layers {
+  layer {
+    name: "relu4"
+    type: "relu"
+  }
+  bottom: "conv4"
+  top: "conv4"
+}
+layers {
+  layer {
+    name: "pad5"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "conv4"
+  top: "pad5"
+}
+layers {
+  layer {
+    name: "conv5"
+    type: "conv"
+    num_output: 256
+    group: 2
+    kernelsize: 3
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pad5"
+  top: "conv5"
+}
+layers {
+  layer {
+    name: "relu5"
+    type: "relu"
+  }
+  bottom: "conv5"
+  top: "conv5"
+}
+layers {
+  layer {
+    name: "pool5"
+    type: "pool"
+    kernelsize: 3
+    pool: MAX
+    stride: 2
+  }
+  bottom: "conv5"
+  top: "pool5"
+}
+layers {
+  layer {
+    name: "fc6"
+    type: "innerproduct"
+    num_output: 4096
+    weight_filler {
+      type: "gaussian"
+      std: 0.005
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pool5"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "relu6"
+    type: "relu"
+  }
+  bottom: "fc6"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "drop6"
+    type: "dropout"
+    dropout_ratio: 0.5
+  }
+  bottom: "fc6"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "fc7"
+    type: "innerproduct"
+    num_output: 4096
+    weight_filler {
+      type: "gaussian"
+      std: 0.005
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "fc6"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "relu7"
+    type: "relu"
+  }
+  bottom: "fc7"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "drop7"
+    type: "dropout"
+    dropout_ratio: 0.5
+  }
+  bottom: "fc7"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "fc8"
+    type: "innerproduct"
+    num_output: 1000
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 0
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "fc7"
+  top: "fc8"
+}
+layers {
+  layer {
+    name: "loss"
+    type: "softmax_loss"
+  }
+  bottom: "fc8"
+  bottom: "label"
+}
diff --git a/models/imagenet_deploy.prototxt b/models/imagenet_deploy.prototxt
new file mode 100644 (file)
index 0000000..6257914
--- /dev/null
@@ -0,0 +1,355 @@
+input: "data"
+input_dim: 10
+input_dim: 3
+input_dim: 227
+input_dim: 227
+layers {
+  layer {
+    name: "conv1"
+    type: "conv"
+    num_output: 96
+    kernelsize: 11
+    stride: 4
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 0.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "data"
+  top: "conv1"
+}
+layers {
+  layer {
+    name: "relu1"
+    type: "relu"
+  }
+  bottom: "conv1"
+  top: "conv1"
+}
+layers {
+  layer {
+    name: "pool1"
+    type: "pool"
+    pool: MAX
+    kernelsize: 3
+    stride: 2
+  }
+  bottom: "conv1"
+  top: "pool1"
+}
+layers {
+  layer {
+    name: "norm1"
+    type: "lrn"
+    local_size: 5
+    alpha: 0.0001
+    beta: 0.75
+  }
+  bottom: "pool1"
+  top: "norm1"
+}
+layers {
+  layer {
+    name: "pad2"
+    type: "padding"
+    pad: 2
+  }
+  bottom: "norm1"
+  top: "pad2"
+}
+layers {
+  layer {
+    name: "conv2"
+    type: "conv"
+    num_output: 256
+    group: 2
+    kernelsize: 5
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pad2"
+  top: "conv2"
+}
+layers {
+  layer {
+    name: "relu2"
+    type: "relu"
+  }
+  bottom: "conv2"
+  top: "conv2"
+}
+layers {
+  layer {
+    name: "pool2"
+    type: "pool"
+    pool: MAX
+    kernelsize: 3
+    stride: 2
+  }
+  bottom: "conv2"
+  top: "pool2"
+}
+layers {
+  layer {
+    name: "norm2"
+    type: "lrn"
+    local_size: 5
+    alpha: 0.0001
+    beta: 0.75
+  }
+  bottom: "pool2"
+  top: "norm2"
+}
+layers {
+  layer {
+    name: "pad3"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "norm2"
+  top: "pad3"
+}
+layers {
+  layer {
+    name: "conv3"
+    type: "conv"
+    num_output: 384
+    kernelsize: 3
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 0.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pad3"
+  top: "conv3"
+}
+layers {
+  layer {
+    name: "relu3"
+    type: "relu"
+  }
+  bottom: "conv3"
+  top: "conv3"
+}
+layers {
+  layer {
+    name: "pad4"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "conv3"
+  top: "pad4"
+}
+layers {
+  layer {
+    name: "conv4"
+    type: "conv"
+    num_output: 384
+    group: 2
+    kernelsize: 3
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pad4"
+  top: "conv4"
+}
+layers {
+  layer {
+    name: "relu4"
+    type: "relu"
+  }
+  bottom: "conv4"
+  top: "conv4"
+}
+layers {
+  layer {
+    name: "pad5"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "conv4"
+  top: "pad5"
+}
+layers {
+  layer {
+    name: "conv5"
+    type: "conv"
+    num_output: 256
+    group: 2
+    kernelsize: 3
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pad5"
+  top: "conv5"
+}
+layers {
+  layer {
+    name: "relu5"
+    type: "relu"
+  }
+  bottom: "conv5"
+  top: "conv5"
+}
+layers {
+  layer {
+    name: "pool5"
+    type: "pool"
+    kernelsize: 3
+    pool: MAX
+    stride: 2
+  }
+  bottom: "conv5"
+  top: "pool5"
+}
+layers {
+  layer {
+    name: "fc6"
+    type: "innerproduct"
+    num_output: 4096
+    weight_filler {
+      type: "gaussian"
+      std: 0.005
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "pool5"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "relu6"
+    type: "relu"
+  }
+  bottom: "fc6"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "drop6"
+    type: "dropout"
+    dropout_ratio: 0.5
+  }
+  bottom: "fc6"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "fc7"
+    type: "innerproduct"
+    num_output: 4096
+    weight_filler {
+      type: "gaussian"
+      std: 0.005
+    }
+    bias_filler {
+      type: "constant"
+      value: 1.
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "fc6"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "relu7"
+    type: "relu"
+  }
+  bottom: "fc7"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "drop7"
+    type: "dropout"
+    dropout_ratio: 0.5
+  }
+  bottom: "fc7"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "fc8"
+    type: "innerproduct"
+    num_output: 1000
+    weight_filler {
+      type: "gaussian"
+      std: 0.01
+    }
+    bias_filler {
+      type: "constant"
+      value: 0
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+    weight_decay: 1.
+    weight_decay: 0.
+  }
+  bottom: "fc7"
+  top: "fc8"
+}
+layers {
+  layer {
+    name: "prob"
+    type: "softmax"
+  }
+  bottom: "fc8"
+  top: "prob"
+}
diff --git a/models/imagenet_solver.prototxt b/models/imagenet_solver.prototxt
new file mode 100644 (file)
index 0000000..7921d32
--- /dev/null
@@ -0,0 +1,14 @@
+train_net: "examples/imagenet.prototxt"
+test_net: "examples/imagenet_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: "caffe_imagenet_train"
diff --git a/models/imagenet_val.prototxt b/models/imagenet_val.prototxt
new file mode 100644 (file)
index 0000000..fbc4c32
--- /dev/null
@@ -0,0 +1,277 @@
+name: "CaffeNet"
+layers {
+  layer {
+    name: "data"
+    type: "data"
+    source: "/home/jiayq/Data/ILSVRC12/val-leveldb"
+    meanfile: "/home/jiayq/Data/ILSVRC12/image_mean.binaryproto"
+    batchsize: 50
+    cropsize: 227
+    mirror: false
+  }
+  top: "data"
+  top: "label"
+}
+layers {
+  layer {
+    name: "conv1"
+    type: "conv"
+    num_output: 96
+    kernelsize: 11
+    stride: 4
+  }
+  bottom: "data"
+  top: "conv1"
+}
+layers {
+  layer {
+    name: "relu1"
+    type: "relu"
+  }
+  bottom: "conv1"
+  top: "conv1"
+}
+layers {
+  layer {
+    name: "pool1"
+    type: "pool"
+    pool: MAX
+    kernelsize: 3
+    stride: 2
+  }
+  bottom: "conv1"
+  top: "pool1"
+}
+layers {
+  layer {
+    name: "norm1"
+    type: "lrn"
+    local_size: 5
+    alpha: 0.0001
+    beta: 0.75
+  }
+  bottom: "pool1"
+  top: "norm1"
+}
+layers {
+  layer {
+    name: "pad2"
+    type: "padding"
+    pad: 2
+  }
+  bottom: "norm1"
+  top: "pad2"
+}
+layers {
+  layer {
+    name: "conv2"
+    type: "conv"
+    num_output: 256
+    group: 2
+    kernelsize: 5
+  }
+  bottom: "pad2"
+  top: "conv2"
+}
+layers {
+  layer {
+    name: "relu2"
+    type: "relu"
+  }
+  bottom: "conv2"
+  top: "conv2"
+}
+layers {
+  layer {
+    name: "pool2"
+    type: "pool"
+    pool: MAX
+    kernelsize: 3
+    stride: 2
+  }
+  bottom: "conv2"
+  top: "pool2"
+}
+layers {
+  layer {
+    name: "norm2"
+    type: "lrn"
+    local_size: 5
+    alpha: 0.0001
+    beta: 0.75
+  }
+  bottom: "pool2"
+  top: "norm2"
+}
+layers {
+  layer {
+    name: "pad3"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "norm2"
+  top: "pad3"
+}
+layers {
+  layer {
+    name: "conv3"
+    type: "conv"
+    num_output: 384
+    kernelsize: 3
+  }
+  bottom: "pad3"
+  top: "conv3"
+}
+layers {
+  layer {
+    name: "relu3"
+    type: "relu"
+  }
+  bottom: "conv3"
+  top: "conv3"
+}
+layers {
+  layer {
+    name: "pad4"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "conv3"
+  top: "pad4"
+}
+layers {
+  layer {
+    name: "conv4"
+    type: "conv"
+    num_output: 384
+    group: 2
+    kernelsize: 3
+  }
+  bottom: "pad4"
+  top: "conv4"
+}
+layers {
+  layer {
+    name: "relu4"
+    type: "relu"
+  }
+  bottom: "conv4"
+  top: "conv4"
+}
+layers {
+  layer {
+    name: "pad5"
+    type: "padding"
+    pad: 1
+  }
+  bottom: "conv4"
+  top: "pad5"
+}
+layers {
+  layer {
+    name: "conv5"
+    type: "conv"
+    num_output: 256
+    group: 2
+    kernelsize: 3
+  }
+  bottom: "pad5"
+  top: "conv5"
+}
+layers {
+  layer {
+    name: "relu5"
+    type: "relu"
+  }
+  bottom: "conv5"
+  top: "conv5"
+}
+layers {
+  layer {
+    name: "pool5"
+    type: "pool"
+    kernelsize: 3
+    pool: MAX
+    stride: 2
+  }
+  bottom: "conv5"
+  top: "pool5"
+}
+layers {
+  layer {
+    name: "fc6"
+    type: "innerproduct"
+    num_output: 4096
+  }
+  bottom: "pool5"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "relu6"
+    type: "relu"
+  }
+  bottom: "fc6"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "drop6"
+    type: "dropout"
+    dropout_ratio: 0.5
+  }
+  bottom: "fc6"
+  top: "fc6"
+}
+layers {
+  layer {
+    name: "fc7"
+    type: "innerproduct"
+    num_output: 4096
+  }
+  bottom: "fc6"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "relu7"
+    type: "relu"
+  }
+  bottom: "fc7"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "drop7"
+    type: "dropout"
+    dropout_ratio: 0.5
+  }
+  bottom: "fc7"
+  top: "fc7"
+}
+layers {
+  layer {
+    name: "fc8"
+    type: "innerproduct"
+    num_output: 1000
+  }
+  bottom: "fc7"
+  top: "fc8"
+}
+layers {
+  layer {
+    name: "prob"
+    type: "softmax"
+  }
+  bottom: "fc8"
+  top: "prob"
+}
+layers {
+  layer {
+    name: "accuracy"
+    type: "accuracy"
+  }
+  bottom: "prob"
+  bottom: "label"
+  top: "accuracy"
+}
diff --git a/models/lenet.prototxt b/models/lenet.prototxt
new file mode 100644 (file)
index 0000000..e1049f7
--- /dev/null
@@ -0,0 +1,122 @@
+name: "LeNet"
+layers {
+  layer {
+    name: "mnist"
+    type: "data"
+    source: "../data/mnist-train-leveldb"
+    batchsize: 64
+    scale: 0.00390625
+  }
+  top: "data"
+  top: "label"
+}
+layers {
+  layer {
+    name: "conv1"
+    type: "conv"
+    num_output: 20
+    kernelsize: 5
+    stride: 1
+    weight_filler {
+      type: "xavier"
+    }
+    bias_filler {
+      type: "constant"
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+  }
+  bottom: "data"
+  top: "conv1"
+}
+layers {
+  layer {
+    name: "pool1"
+    type: "pool"
+    kernelsize: 2
+    stride: 2
+    pool: MAX
+  }
+  bottom: "conv1"
+  top: "pool1"
+}
+layers {
+  layer {
+    name: "conv2"
+    type: "conv"
+    num_output: 50
+    kernelsize: 5
+    stride: 1
+    weight_filler {
+      type: "xavier"
+    }
+    bias_filler {
+      type: "constant"
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+  }
+  bottom: "pool1"
+  top: "conv2"
+}
+layers {
+  layer {
+    name: "pool2"
+    type: "pool"
+    kernelsize: 2
+    stride: 2
+    pool: MAX
+  }
+  bottom: "conv2"
+  top: "pool2"
+}
+layers {
+  layer {
+    name: "ip1"
+    type: "innerproduct"
+    num_output: 500
+    weight_filler {
+      type: "xavier"
+    }
+    bias_filler {
+      type: "constant"
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+  }
+  bottom: "pool2"
+  top: "ip1"
+}
+layers {
+  layer {
+    name: "relu1"
+    type: "relu"
+  }
+  bottom: "ip1"
+  top: "ip1"
+}
+layers {
+  layer {
+    name: "ip2"
+    type: "innerproduct"
+    num_output: 10
+    weight_filler {
+      type: "xavier"
+    }
+    bias_filler {
+      type: "constant"
+    }
+    blobs_lr: 1.
+    blobs_lr: 2.
+  }
+  bottom: "ip1"
+  top: "ip2"
+}
+layers {
+  layer {
+    name: "loss"
+    type: "softmax_loss"
+  }
+  bottom: "ip2"
+  bottom: "label"
+}
diff --git a/models/lenet_solver.prototxt b/models/lenet_solver.prototxt
new file mode 100644 (file)
index 0000000..d0edc0f
--- /dev/null
@@ -0,0 +1,27 @@
+# The training protocol buffer definition
+train_net: "lenet.prototxt"
+# The testing protocol buffer definition
+test_net: "lenet_test.prototxt"
+# test_iter specifies how many forward passes the test should carry out.
+# In the case of MNIST, we have test batch size 100 and 100 test iterations,
+# covering the full 10,000 testing images.
+test_iter: 100
+# Carry out testing every 500 training iterations.
+test_interval: 500
+# The base learning rate, momentum and the weight decay of the network.
+base_lr: 0.01
+momentum: 0.9
+weight_decay: 0.0005
+# The learning rate policy
+lr_policy: "inv"
+gamma: 0.0001
+power: 0.75
+# Display every 100 iterations
+display: 100
+# The maximum number of iterations
+max_iter: 10000
+# snapshot intermediate results
+snapshot: 5000
+snapshot_prefix: "lenet"
+# solver mode: 0 for CPU and 1 for GPU
+solver_mode: 1
diff --git a/models/lenet_test.prototxt b/models/lenet_test.prototxt
new file mode 100644 (file)
index 0000000..38f1a5e
--- /dev/null
@@ -0,0 +1,123 @@
+name: "LeNet-test"
+layers {
+  layer {
+    name: "mnist"
+    type: "data"
+    source: "../data/mnist-test-leveldb"
+    batchsize: 100
+    scale: 0.00390625
+  }
+  top: "data"
+  top: "label"
+}
+layers {
+  layer {
+    name: "conv1"
+    type: "conv"
+    num_output: 20
+    kernelsize: 5
+    stride: 1
+    weight_filler {
+      type: "xavier"
+    }
+    bias_filler {
+      type: "constant"
+    }
+  }
+  bottom: "data"
+  top: "conv1"
+}
+layers {
+  layer {
+    name: "pool1"
+    type: "pool"
+    kernelsize: 2
+    stride: 2
+    pool: MAX
+  }
+  bottom: "conv1"
+  top: "pool1"
+}
+layers {
+  layer {
+    name: "conv2"
+    type: "conv"
+    num_output: 50
+    kernelsize: 5
+    stride: 1
+    weight_filler {
+      type: "xavier"
+    }
+    bias_filler {
+      type: "constant"
+    }
+  }
+  bottom: "pool1"
+  top: "conv2"
+}
+layers {
+  layer {
+    name: "pool2"
+    type: "pool"
+    kernelsize: 2
+    stride: 2
+    pool: MAX
+  }
+  bottom: "conv2"
+  top: "pool2"
+}
+layers {
+  layer {
+    name: "ip1"
+    type: "innerproduct"
+    num_output: 500
+    weight_filler {
+      type: "xavier"
+    }
+    bias_filler {
+      type: "constant"
+    }
+  }
+  bottom: "pool2"
+  top: "ip1"
+}
+layers {
+  layer {
+    name: "relu1"
+    type: "relu"
+  }
+  bottom: "ip1"
+  top: "ip1"
+}
+layers {
+  layer {
+    name: "ip2"
+    type: "innerproduct"
+    num_output: 10
+    weight_filler {
+      type: "xavier"
+    }
+    bias_filler {
+      type: "constant"
+    }
+  }
+  bottom: "ip1"
+  top: "ip2"
+}
+layers {
+  layer {
+    name: "prob"
+    type: "softmax"
+  }
+  bottom: "ip2"
+  top: "prob"
+}
+layers {
+  layer {
+    name: "accuracy"
+    type: "accuracy"
+  }
+  bottom: "prob"
+  bottom: "label"
+  top: "accuracy"
+}