首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >caffe / pycaffe的小抄?

caffe / pycaffe的小抄?
EN

Stack Overflow用户
提问于 2015-09-03 23:32:44
回答 2查看 26.7K关注 0票数 45

有没有人知道所有重要的pycaffe命令都有一个小抄?到目前为止,我只通过Matlab界面和终端+ bash脚本使用caffe。

我想转到使用ipython,并完成ipython笔记本示例。但是,我发现很难全面了解python的caffe模块中的所有函数。(我也是python的新手)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-11 02:16:05

pycaffe teststhis file是python编码接口的主要网关。

首先,您希望选择将Caffe与CPU或GPU一起使用。分别调用caffe.set_mode_cpu()caffe.set_mode_gpu()就足够了。

Net

pycaffe接口公开的主类是Net。它有两个构造函数:

代码语言:javascript
运行
复制
net = caffe.Net('/path/prototxt/descriptor/file', caffe.TRAIN)

它只是创建一个Net (在本例中使用指定用于训练的数据层),或者

代码语言:javascript
运行
复制
net = caffe.Net('/path/prototxt/descriptor/file', '/path/caffemodel/weights/file', caffe.TEST)

它创建一个Net并自动加载保存在所提供的caffemodel文件中的权重-在本例中使用指定用于测试的数据层。

Net对象有几个属性和方法。可以在here中找到它们。我将只列举我经常使用的那些。

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

代码语言:javascript
运行
复制
data = net.blobs['data'].data
net.blobs['data'].data[...] = my_image
fc7_activations = net.blobs['fc7'].data

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

代码语言:javascript
运行
复制
nice_edge_detectors = net.params['conv1'].data
higher_level_filter = net.params['fc7'].data

好了,现在是时候向网络提供一些数据了。因此,您将使用backward()forward()方法。因此,如果您想对单个图像进行分类

代码语言:javascript
运行
复制
net.blobs['data'].data[...] = my_image
net.forward() # equivalent to net.forward_all()
softmax_probabilities = net.blobs['prob'].data

如果有人对计算梯度感兴趣,那么backward()方法是等效的。

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

代码语言:javascript
运行
复制
 net.save('/path/to/new/caffemodel/file')

求解器

pycaffe公开的另一个核心组件是Solver。有几种类型的求解器,但为了清楚起见,我将只使用SGDSolver。它是训练咖啡因模型所必需的。可以使用以下命令实例化求解器

代码语言:javascript
运行
复制
solver = caffe.SGDSolver('/path/to/solver/prototxt/file')

Solver将封装您正在训练的网络以及用于测试的网络(如果存在)。请注意,它们通常是相同的网络,只是具有不同的数据层。可以通过以下方式访问这些网络

代码语言:javascript
运行
复制
 training_net = solver.net
 test_net = solver.test_nets[0] # more than one test net is supported

然后,您可以执行求解器迭代,即具有权重更新的向前/向后传递,只需输入

代码语言:javascript
运行
复制
 solver.step(1)

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

代码语言:javascript
运行
复制
 solver.solve()

其他功能

注意,pycaffe允许您做更多的事情,比如specifying the network architecture through a Python classcreating a new type。这些功能较少使用,但通过阅读测试用例可以很容易地理解它们。

票数 98
EN

Stack Overflow用户

发布于 2016-07-18 10:59:08

请注意,Flavio Ferrara的答案有一个小问题,可能会让你浪费很多时间:

代码语言:javascript
运行
复制
net.blobs['data'].data[...] = my_image
net.forward()

如果您的第一层是数据类型层,则上面的代码是无效的,因为当调用net.forward()时,它将从第一层开始,然后覆盖您插入的数据my_image。所以它不会显示错误,但会给出完全不相关的输出。正确的方法是指定起始层和结束层,例如:

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

这是一个基于LFW数据集的人脸验证实验的Github存储库,使用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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32379878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档