第一章 Caffe工具库

学习完吴恩达老师的深度学习课程,总感觉还是基础不够,实践也不够多,好多工具库等等都不会用,偶然看见网易云课堂微专业《深度学习工程师(实战)》,看了介绍感觉不错,因此重新回头学习,将持续跟新学习笔记……

第一章 Caffe工具库

1.1 本章概述

相对较早,传统的CV公司使用较多,有纯命令行的解决方案。

1.2Caffa工具库简介

Caffa是一个以表达式、速度和模块化为核心的深度学习框架,由BLVC和社区贡献者开发,项目创建者是贾扬清。
Caffa是一个C++/CUDA的架构,支持命令行、pyhton和MATLAB借口,较早出现,早期的深度学习项目都是基于Caffe。
Caffe的优势:

  • 第一个主流工业级深度学习工具,适合快速开发工程应用。
  • 运行时都是编译好的C++代码,比需要实时调用Python解释器的框架要快很多。Google Protocol Buffer数据标准为Caffe提升了效率,能够运行最棒的模型与海量的数据。
  • 在计算机视觉领域,图像的CNN操作在成熟的OpenCv函数库中有良好表现。
  • 配置文件简单,文档齐全。模型与相应优化都是以文本形式而非代码形式给出。
  • 开放性强,可以使用Caffe提供的各层类型来定义自己的模型,甚至修改卷积操作。
  • 但是由于一些遗留的架构问题,它对递归网络和语言模型的支持很差。

1.3 使用Caffe完成神经网络训练操作步骤

使用命令行的步骤:
1.原始数据转换——写数据转换脚本
    1>when:
     - Caffe中经常使用额数据类型是lmdb(默认)或leveldb等
     - 原始数据是图片(如jpg、png、tif)等大量的散碎文件
    why:
     - 特殊的二进制数据文件,对计算机读写操作有极大的优化

//以HDFS-5数据格式输入示例(来自Caffe官方)
name: "LogisticRegressionNet"
layers{
    name:"data"
    type:"HDF5Data"
    top:"data"
    top:"label"
    include{
        phase:TRAIN
    }
    hdf5_data_param{
        source:"examples/hdf5_classification/data/train.txt"
        batch_size:10
    }
}

2.定义网络层——按指定格式写prototxt文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wWg1RJkt-1584535111733)(_v_images/20200312192817591_29268.png =1000x)]
3.solver定义——按指定格式写prototxt文件

  • 我们可以仿照Caffe官方给定的文件格式来改写自己的solver.prototxt文件
  • 下面的文本即为一个针对于cifar10数据集的solver文件
# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10
# then another factor of 10 after 10 more epochs (5000 iters)

# The train/test net protocol buffer definition
net: "examples/cifar10/cifar10_full_sigmoid_train_test.prototxt"
# test_iter specifies how many forward passes the test should carry out.
# In the case of CIFAR10, we have test batch size 100 and 100 test iterations,
# covering the full 10,000 testing images.
test_iter: 10
# Carry out testing every 1000 training iterations.
test_interval: 1000
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.001
momentum: 0.9
#weight_decay: 0.004
# The learning rate policy
lr_policy: "step"
gamma: 1
stepsize: 5000
# Display every 100 iterations
display: 100
# The maximum number of iterations
max_iter: 60000
# snapshot intermediate results
snapshot: 10000
snapshot_prefix: "examples/cifar10_full_sigmoid"
# solver mode: CPU or GPU
solver_mode: GPU

来自于https://github.com/BVLC/caffe/blob/master/examples/cifar10/cifar10_full_sigmoid_solver.prototxt
4.训练——写一个训练脚本

# 命令行脚本
./build/tools/caffe train\
    gpu 0\                                        # gpu设备号
    model path/to/trainval.prototxt\              # 网络模型设计文件
    solver path/to/solver.prototxt\               # 模型的优化文件
    weights path/to/pretrained_weights.caffemodel # 预训练模型
     # 模型的优化文件
weights path/to/pretrained_weights.caffemodel # 预训练模型

你可能感兴趣的:(深度学习)