- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有谁知道是否有所有重要 pycaffe 命令的备忘单?到目前为止,我仅通过 Matlab 界面和终端 + bash 脚本使用 caffe。
我想转向使用 ipython 并完成 ipython 笔记本示例。然而,我发现很难概述 python 的 caffe 模块内的所有函数。 (我对 python 也很陌生)。
最佳答案
pycaffe tests和 this file是通往 Python 编码接口(interface)的主要门户。
首先,您需要选择是使用CPU还是GPU的Caffe。分别调用 caffe.set_mode_cpu()
或 caffe.set_mode_gpu()
就足够了。
pycaffe接口(interface)公开的主要类是Net
。它有两个构造函数:
net = caffe.Net('/path/prototxt/descriptor/file', caffe.TRAIN)
它只是创建一个Net
(在本例中使用指定用于训练的数据层),或者
net = caffe.Net('/path/prototxt/descriptor/file', '/path/caffemodel/weights/file', caffe.TEST)
它创建一个Net
并自动加载保存在提供的caffemodel文件中的权重 - 在本例中使用指定的数据层测试。
Net
对象具有多个属性和方法。可以找到它们here 。我只会引用我经常使用的那些。
您可以通过Net.blobs
访问网络blob。例如
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
好的,现在是时候向网络提供一些数据了。因此,您将使用 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
。求解器有多种类型,但为了清楚起见,我将仅使用 SGDSolver
。训练咖啡模型需要它。您可以使用以下命令实例化求解器
solver = caffe.SGDSolver('/path/to/solver/prototxt/file')
求解器
将封装您正在训练的网络以及用于测试的网络(如果存在)。请注意,它们通常是同一网络,只是具有不同的数据层。网络可通过以下方式访问
training_net = solver.net
test_net = solver.test_nets[0] # more than one test net is supported
然后,您可以执行求解器迭代,即带有权重更新的前向/后向传递,只需键入
solver.step(1)
或者运行求解器直到最后一次迭代,
solver.solve()
请注意,pycaffe 允许您做更多的事情,例如 specifying the network architecture through a Python class或creating a new Layer type 。这些功能不太常用,但通过阅读测试用例很容易理解。
关于jupyter-notebook - caffe/pycaffe 备忘单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379878/
我是一名优秀的程序员,十分优秀!