caffe的matlab接口的功能和python接口功能基本类似,不同之处在于:
- python可以自己增加python layer
- python可以采用多种求解反向传播的算法
但是matlab在处理数据及数据可视化方面比python容易很多,在需要查看中间结果时使用matlab要方便许多。
1. 查看caffe版本号
caffe.version()
如果正确编译了caffe的matlab接口,并将其$CAFFE_DIR/matlab
及其子文件添加到matlab的路径当中,执行该语句将会出现caffe的版本号,同时这也是验证caffe使用编译成功的一种方式。
2. 设置caffe运行方式
GPU方式,matlab是不支持GPU多核的,需要设置一个GPU的id。
caffe.set_mode_gpu();
caffe.set_device(0);
CPU方式
caffe.set_mode_cpu();
3. 载入网络
将训练网络和测试网络写入两个不同的prototxt文件,会增减可读性。载入网络可分为训练阶段载入和测试阶段载入。
- 载入测试网络
net = caffe.Net(model, weights, 'test');
- 载入训练网路
net = caffe.Net(model, weights, 'train');
4. 测试阶段
按照网络输入数据参数准备好数据之后,将其传递到net当中并进行前向传播
residual= net.forward({data});
5. 获得各层中间结果
可以直接通过blob的名字获得中间结果,例如:
conv1 = net.blobs('conv1_1').get_data();
6. 获得模型参数
模型参数通过layer来获得,例如:
weightConv1 = net.layers('conv1_1').params(1).get_data();