深度学习之Caffe实战教程

Caffe是目前产品化最多的库,图像的问题用Coffe很方便,训练只需写prototxt。

一、Caffe使用方法1

这种训练方式不用写代码,这里以图像数据和卷积神经网络模型为例,训练过程如下:
1、Resize图片,转换存储格式(LMDB/LevelDB);
2、定义网络结构(编辑prototxt);
3、定义solver(寻优方法,编辑另一个prototxt);
4、一行命令开始训练(可以基于已有的权重赋值)。
整体过程如下图所示:
深度学习之Caffe实战教程_第1张图片
第一步:转换格式

使用命令行:convert_imageset,需要输入图片的位置和标签:
在这里插入图片描述
如下图所示:
深度学习之Caffe实战教程_第2张图片
第二步:定义层次结构

以下内容在prototxt中编辑
数据层:

name: "mnist"  # 定义层名称
  type: DATA  # 该层的类型
  data_param{
    source: "mnist-train-leveldb"  # 图片数据存储位置,由第一步转换格式得到
    batch_size: 64  # 训练时,数据分批训练,一批数据有64张
    scale: 0.00390625  # 1/255,将像素转到0~1之间
  }
  top: "data"
  top: "label"  # 输出,供下一层输入

卷积层:

name: "conv1"
  type: CONVOLUTION
  blobs_lr: 1.  # 该层w的学习率
  blobs_lr: 2.  # 该层b的学习率
  convolution_param{
    num_output: 20  # 该层神经元个数
    kernelsize: 5  #卷积核窗口大小
    stride: 1  # 步长
    weight_filler{
      type: "xavier"  # w初始化方式
    }
    bias_filler{
      type: "constant"  # b初始化方式
    }
  }
  bottom: "data"  # 输入
  top: "conv1"

池化层:

name: "pool1"
  type: POOLING
  pooling param{
    kernel_size: 2
    stride: 2
    pool: MAX  # 池化方式-取最大
  }
  bottom: "conv1"
  top: "pool1"

全连接层:

name: "ip1"
  type: INNER_PRODUCT
  blobs_lr: 1.
  blobs_lr: 2.
  inner_product_param{
    num_output: 500
    weight_filler{
      type: "xavier"
    }
    bias_filler{
      type: "constant"
    }
  }
  bottom: "pool2"
  top: "ip1"

SoftMax+Loss Layer

layer{
  name: "loss"
  type: SOFTMAX_LOSS
  bottom: "ip2"
  bottom: "label"
}

如LeNet网络:
深度学习之Caffe实战教程_第3张图片

第三步:定义solver

net: "examples/mnist/lenet_train_test.prototxt"  # 第二步定义网络结构的prototxt所在的位置
test_iter: 100  # 测试集做预测时,每批输入的图像个数
test_interval: 500  # 每训练迭代更新500步做一次预测
base_lr: 0.01  # 总的学习率,每一层定义的学习率与之相乘才是该层最终得学习率
momentum: 0.9
weight_decay: 0.0005
lr_policy: "inv"
gamma: 0.0001
power: 0.75
display: 100  # 每迭代更新100步输出一次信息
max_iter: 10000  # 总共迭代10000步
snapshot: 5000  # 每隔5000步保留一下参数
snapshot_prefix: "examples/mnist/lenet"
solver_mode: GPU

第四步:训练
在命令行中输入一句指令:
深度学习之Caffe实战教程_第4张图片
例如:
深度学习之Caffe实战教程_第5张图片

二、Caffe使用方法2
在python环境下运行,用python代码书写-pycaffe
深度学习之Caffe实战教程_第6张图片
步骤:
加载所需库

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import caffe

选择GPU或者CPU

# 使用cpu
caffe.set_mode_cpu()
#使用gpu
caffe.set_device(0)
caffe.set_mode_gpu()

定义网络结构
深度学习之Caffe实战教程_第7张图片
载入solver
深度学习之Caffe实战教程_第8张图片
训练
深度学习之Caffe实战教程_第9张图片

你可能感兴趣的:(程序解析,原理解析,深度学习)