为caffe/pycaffe作弊sheet?
Cheat sheet for caffe / pycaffe?
有谁知道pycaffe的所有重要命令是否都有作弊sheet?
到目前为止,我仅通过 Matlab 界面和终端 + bash 脚本使用 caffe。
我想转向使用 ipython 并完成 ipython 笔记本示例。但是,我发现很难全面了解 python 的 caffe 模块中的所有功能。 (我对 python 也很陌生)。
pycaffe tests and this file 是 python 编码界面的主要入口。
首先,您要选择是使用 Caffe with CPU 还是 GPU。分别调用caffe.set_mode_cpu()
或caffe.set_mode_gpu()
即可。
网络
pycaffe 接口公开的主要 class 是 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 文件中的权重 - 在本例中使用 Data Layer 指定用于测试。
一个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()
方法。因此,如果您想 class 化单个图像
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')
Solver
将封装您正在训练的网络以及用于测试的网络(如果存在)。请注意,它们通常是同一个网络,只是具有不同的 数据层 。可以使用
访问网络
training_net = solver.net
test_net = solver.test_nets[0] # more than one test net is supported
然后,您可以执行求解器迭代,即 forward/backward 通过权重更新,只需输入
solver.step(1)
或运行求解器直到最后一次迭代,
solver.solve()
其他功能
请注意,pycaffe 允许您做更多的事情,例如 specifying the network architecture through a Python class or creating a new Layer type。
这些功能不太常用,但通过阅读测试用例很容易理解。
请注意,Flavio Ferrara 的回答有一个小问题,可能会浪费您很多时间:
net.blobs['data'].data[...] = my_image
net.forward()
如果你的第一层是数据类型层,上面的代码是无效的,因为调用net.forward()
时,它会从第一层开始,然后你插入的数据my_image
覆盖。所以它不会显示任何错误,但会给你完全不相关的输出。正确的方法是指定起始层和结束层,例如:
net.forward(start='conv1', end='fc')
这是一个 Github LFW 数据集人脸验证实验的存储库,使用 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
有谁知道pycaffe的所有重要命令是否都有作弊sheet? 到目前为止,我仅通过 Matlab 界面和终端 + bash 脚本使用 caffe。
我想转向使用 ipython 并完成 ipython 笔记本示例。但是,我发现很难全面了解 python 的 caffe 模块中的所有功能。 (我对 python 也很陌生)。
pycaffe tests and this file 是 python 编码界面的主要入口。
首先,您要选择是使用 Caffe with CPU 还是 GPU。分别调用caffe.set_mode_cpu()
或caffe.set_mode_gpu()
即可。
网络
pycaffe 接口公开的主要 class 是 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 文件中的权重 - 在本例中使用 Data Layer 指定用于测试。
一个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()
方法。因此,如果您想 class 化单个图像
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')
Solver
将封装您正在训练的网络以及用于测试的网络(如果存在)。请注意,它们通常是同一个网络,只是具有不同的 数据层 。可以使用
training_net = solver.net
test_net = solver.test_nets[0] # more than one test net is supported
然后,您可以执行求解器迭代,即 forward/backward 通过权重更新,只需输入
solver.step(1)
或运行求解器直到最后一次迭代,
solver.solve()
其他功能
请注意,pycaffe 允许您做更多的事情,例如 specifying the network architecture through a Python class or creating a new Layer type。 这些功能不太常用,但通过阅读测试用例很容易理解。
请注意,Flavio Ferrara 的回答有一个小问题,可能会浪费您很多时间:
net.blobs['data'].data[...] = my_image
net.forward()
如果你的第一层是数据类型层,上面的代码是无效的,因为调用net.forward()
时,它会从第一层开始,然后你插入的数据my_image
覆盖。所以它不会显示任何错误,但会给你完全不相关的输出。正确的方法是指定起始层和结束层,例如:
net.forward(start='conv1', end='fc')
这是一个 Github LFW 数据集人脸验证实验的存储库,使用 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