该pycaffe测试和这个文件的主要门户,python编码接口。
首先,您想选择将Caffe与CPU或GPU一起使用。分别调用
caffe.set_mode_cpu()或即可
caffe.set_mode_gpu()。
Net
pycaffe接口公开的主要类是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对象具有几种属性和方法。他们可以在这里找到。我只会引用我经常使用的内容。
您可以通过来访问网络Blob Net.blobs。例如
data = net.blobs['data'].datanet.blobs['data'].data[...] = my_imagefc7_activations = net.blobs['fc7'].data
您也可以类似的方式访问参数(权重)。例如
nice_edge_detectors = net.params['conv1'].datahigher_level_filter = net.params['fc7'].data
好的,现在是时候向网络提供一些数据了。因此,您将使用backward()和forward()方法。因此,如果您要对单个图像进行分类
net.blobs['data'].data[...] = my_imagenet.forward() # equivalent to net.forward_all()softmax_probabilities = net.blobs['prob'].data
backward()如果对计算梯度感兴趣,则该方法是等效的。
您可以保存净重,以随后再使用它们。这只是一个问题
net.save('/path/to/new/caffemodel/file')解算器
pycaffe暴露的另一个核心组件是Solver。有几种类型的求解器,但是SGDSolver为了清楚起见,我将仅使用它。为了训练Caffe模型,这是必需的。您可以使用实例化求解器
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
然后,您可以执行一个求解器迭代,即具有权重更新的向前/向后传递,只需键入
solver.step(1)
或运行求解器直到最后一次迭代,使用
solver.solve()
其它功能
请注意,pycaffe允许您执行更多操作,例如通过Python类指定网络体系结构或创建新的Layer类型。这些功能很少使用,但是通过阅读测试用例就很容易理解。



