caffe学习之Lenet-5详解

来源:互联网 发布:linux 启动网络服务 编辑:程序博客网 时间:2024/05/17 16:44
from pylab import *%matplotlib inlinecaffe_root = '../'  # this file should be run from {caffe_root}/examples (otherwise change this line)import sys         #句1sys.path.insert(0, caffe_root + 'python')  #句2import caffe

注释:可以通过,在/etc/profile文件中添加

export PYTHONPATH=/home/zhangteng/apps/caffe/python:$PYTHONPATH

这样就不用每次import caffe时都要增添句1和句2


思考:每一个问题,必须要有待处理的对象也即数据,对于一个实际的问题,原始数据存储的格式五花八门,如.txt,.csv等,caffe能够处理这些类型的文件吗?我们是不是应该需要将其转换为caffe能够接受的数据格式来方便caffe的进一步使用?

问题:1.caffe能够接受的数据文件类型有哪些?2.我们如何把杂乱无章的原始数据格式转换为caffe能够接受的数据格式?来看看具体到mnist数据集,caffe的例程是如何做的

# run scripts from caffe rootimport osos.chdir(caffe_root)# Download data!data/mnist/get_mnist.sh# Prepare data!examples/mnist/create_mnist.sh# back to examplesos.chdir('examples')

可以看到它执行了两个脚本文件,

第一个脚本文件主要作用是从lenet网站上下载mnist数据集,里面关键步骤是:

   wget --no-check-certificate http://yann.lecun.com/exdb/mnist/${fname}.gz

但下载下来的数据格式为-ubyte文件类型,而caffe的处理文件类型有两种lmdb和leveldb,所以还要再做一下数据文件格式转换,这部分主要在第二个脚本文件里面进行。但有一点要注意,事实上第二个脚本文件内部调用了/build/mnist/convert_mnist.bin来具体执行的,关键步骤是:

$BUILD/convert_mnist_data.bin $DATA/train-images-idx3-ubyte \ 18   $DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND} 19 $BUILD/convert_mnist_data.bin $DATA/t10k-images-idx3-ubyte \ 20   $DATA/t10k-labels-idx1-ubyte $EXAMPLE/mnist_test_${BACKEND} --backend=${BACKEND}

至此,我们已经有了,可以被caffe所处理的数据了,接下来进入关键的网络搭建环节,

上述是caffe自带的mnist手写例子。原始数据是二进制文件。但实际工作中最常见的还是原始数据为图片数据。参考caffe如何一步一步训练自己的模型这位作者的博客写的很好。这里不在赘述,但会有一些自己踩过的一些坑,参看