用Caffe 训练和测试MNIST数据

Caffe安装包自带mnist的例子。测试步骤如下

 

1.数据下载

获得mnist的数据包,在caffe的根目录下执行./date/mnist/get_mnist.sh脚本

 

2.生成LMDB

执行./example/mnist/create_mnist.sh。将mnist date 转化成caffe可用的lmdb格式文件。


3. 定义MNIST Network

3.1 写Data Layer
   目前我们从之前创立的lmdb中读取MNIST data,该数据层定义为
layers {
  name: "mnist"
  type: DATA  //输入层的类型为date层
  data_param {
source: "mnist_train_lmdb"
backend: LMDB
batch_size: 64  //一次训练64条数据
scale: 0.00390625  //输入图像归一到【0.1】,1除以256为0.00390625
     }
   top: "data"
   top: "label"
      }

3.2 写Convolution Layer
    定义地一层convolution layer:
layers {
  name: "conv1"  //卷积层名称
  tyoe: CONVOLUTION
  blobs_lr: 1.  //权重参数w的学习率倍数
  blobs_lr: 2.  //偏置参数b的学习率倍数
  convolution_param {
num_output: 20  //输出单元数20
kernelsize: 5  //卷积核大小为5*5
stride: 1  //步长为1
weight_filler {
                     type: "xavier"  //使用xavier算法自动确定基于输入输出神经元数量的初始规模    
     }
bias_filler  {
 type: "constant"  //偏置值初始化为常数,默认为0
    }
   }
   bottom: "data"
   top: "conv1"
      }

3.3 写Pooling Layer
    layers {
  name: "pool1"
  type: POOLING
  pooling_param {
kernel_size: 2  //pooling核为2*2
stride: 2
pool: MAX  //pooling的方式为MAX
}
  bottom: "conv1"
  top: "pool1"
      }

类似地,你还可以定义第二个covolution和pooling layers, 具体可参考
/examples/mnist/lenet_train_test.prototxt


3.4 写Fully connected Layer
    layers {
  name: "ip1"
  type: INNER_PRODUCT  //层类型为全连接层
  blobs_lr: 1.
  blobs_lr: 2.
  inner_product_param {  //全连接层的参数
num_output: 500  //输出500个节点
weight_filler {
type: "xavier"
     }
bias_filler {
type: "constant"
   }
      }
  bottom: "pool2"
  top: "ip1"
      } 

3.5 写ReLU Layer
    layers {
  name: "relu1"
  type: RELU
  bottom: "ip1"
  top: "ip1"
      }
ReLU layer之后,我们可以写另一个innerproduct layer:
layers {
  name: "ip2"
  type: INNER_PRODUCT
  blobs_lr: 1.
  blobs_lr: 2.
  inner_product_param {
num_output: 10  //输出10个单元
weight_filler {
type: "xavier"
     }
bias_filler {
type: "constant"
   }
      }
  bottom: "ip1"
  top: "ip2"  
      }


3.6 写Loss Layer
     最后写loss
layers {  //loss层,SOFTMAX_LOSS层实现softmax和多项logistics损失
   name: “loss”
   type: SOFTMAX_LOSS
   bottom: "ip2"
   bottom: "label"
      }

4. 训练网络  运行./example/mnist/train_lenet.sh

5. 测试网络  运行./example/mnist/test_lenet.sh

 

测试数据中的accruacy的平均成功率0.99

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值