from pylab import *
%matplotlib inline
caffe_root = '../' # this file should be run from {caffe_root}/examples (otherwise change this line)
import sys #句1
sys.path.insert(0, caffe_root + 'python') #句2
import 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 root
import os
os.chdir(caffe_root)
# Download data
!data/mnist/get_mnist.sh
# Prepare data
!examples/mnist/create_mnist.sh
# back to examples
os.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如何一步一步训练自己的模型这位作者的博客写的很好。这里不在赘述,但会有一些自己踩过的一些坑,参看