咖啡/ pycaffe备忘单?

有谁知道是否有所有重要的pycaffe命令的备忘单? 我到目前为止只能通过Matlab接口和terminal+ bash脚本来使用caffe。

我想转向使用ipython,并通过ipython笔记本的例子。 然而,我发现很难得到python模块中的所有函数的概述。 (我也是相当新的python)。

pycaffetesting和这个文件是python编码接口的主要网关。

首先,你想select是否使用与CPU或GPU的Caffe。 分别调用caffe.set_mode_cpu()caffe.set_mode_gpu()就足够了。

pycaffe接口暴露的主要类是Net 。 它有两个构造函数:

 net = caffe.Net('/path/prototxt/descriptor/file', caffe.TRAIN) 

它只是创build一个Net (在这种情况下使用指定的训练数据层 ),或

 net = caffe.Net('/path/prototxt/descriptor/file', '/path/caffemodel/weights/file', caffe.TEST) 

它会创build一个Net并自动加载所提供的caffemodel文件中保存的权重 – 在这种情况下,使用指定用于testing的数据层

一个Net对象有几个属性和方法。 他们可以在这里find。 我会引用我经常使用的那些。

您可以通过Net.blobs访问networkingblob。 例如

 data = net.blobs['data'].data net.blobs['data'].data[...] = my_image fc7_activations = net.blobs['fc7'].data 

您也可以以类似的方式访问参数(权重)。 例如

 nice_edge_detectors = net.params['conv1'].data higher_level_filter = net.params['fc7'].data 

好的,现在是时候用一些数据为networking提供服务了。 所以,你将使用backward()forward()方法。 所以,如果你想分类一个单一的形象

 net.blobs['data'].data[...] = my_image net.forward() # equivalent to net.forward_all() softmax_probabilities = net.blobs['prob'].data 

如果对计算梯度感兴趣,则backward()方法是等价的。

您可以保存净重以便随后重新使用它们。 这只是一个问题

  net.save('/path/to/new/caffemodel/file') 

求解

由pycaffe暴露的另一个核心组件是Solver 。 有几种types的解算器,但为了清楚起见,我将只使用SGDSolver 。 培训咖啡模型是必要的。 你可以使用实例化求解器

 solver = caffe.SGDSolver('/path/to/solver/prototxt/file') 

Solver将封装你正在训练的networking,如果存在的话,用于testing的networking。 请注意,它们通常是相同的networking,只能使用不同的数据层 。 networking可以访问

  training_net = solver.net test_net = solver.test_nets[0] # more than one test net is supported 

然后,你可以执行求解迭代,也就是说,带有权重更新的向前/向后传递,只需键入

  solver.step(1) 

或者运行求解器直到最后一次迭代

  solver.solve() 

其他特性

请注意pycaffe允许你做更多的事情,例如通过Python类指定networking体系结构或创build一个新的Layertypes 。 这些function使用较less,但通过阅读testing案例,这些function非常容易理解。

请注意,弗拉维奥费拉拉的答案有一个小问题,这可能会导致你浪费了很多时间:

 net.blobs['data'].data[...] = my_image net.forward() 

如果你的第一层是数据types层,上面的代码是无效的,因为当net.forward()时,它将从第一层开始,然后你的插入数据my_image将被覆盖。 所以它会显示没有错误,但给你完全不相关的输出。 正确的方法是分配开始和结束图层,例如:

net.forward(start='conv1', end='fc')

这是一个Github的LFW数据集的人脸validation实验库,使用pycaffe和一些matlab代码。 我想这可以帮助很多,特别是caffe_ftr.py文件。

https://github.com/AlfredXiangWu/face_verification_experiment

另外,下面是一些使用pycaffe进行图像分类的简单示例代码:

http://codrspace.com/Jaleyhd/caffe-python-tutorial/ http://prog3.com/sbdm/blog/u011762313/article/details/48342495