使用IDE开发深度学习的应用,可以事半功倍,Caffe2已经全面支持Python,这里介绍如何在Ubantu14.04下,利用EclipseCaffe2的二次开发或应用。
1.安装eclipse
具体请参考:ROS知识(6)----基于Eclipse开发
2.安装eclipse的插件PyDev
具体请参阅:几个常用的Eclipse插件
3建立PyDev新项目
a.点击"File->New->Other...",弹出对话框,选择“PyDev Project”,如下图所示:
b.选择下一步,弹出如下对话框,在“Project Name”中输入项目名称,然后点击"Finish"。
c.设置caffe2的环境依赖
鼠标右击项目,选择“property”,弹出如下对话框,并选择“PyDev-Interpreter/Grammar”
d.点击“New Folder”添加两个Python的路径,分别为:
/usr/local/caffe2/python
/usr/local
e.添加后如下图所示,点击”Apply“,然后点击”OK“退出。
f.重启eclipse,重新导入项目。
4.测试Caffe2
a.在项目的src下添加python文件test1.py,然后添加如下代码
from caffe2.python import workspace, model_helper,cnn
import numpy as np data_dim = 1000
label_dim = 10 print("Build Net")
# Create the input data
data = np.random.rand(label_dim, data_dim).astype(np.float32)
# Create labels for the data as integers [0, 9].
label = (np.random.rand(label_dim) * 10).astype(np.int32)
workspace.FeedBlob("data", data)
workspace.FeedBlob("label", label) # Create model using a model helper
m = cnn.CNNModelHelper(name="my first net")
fc_1 = m.FC("data", "fc1", dim_in=data_dim, dim_out=10)
pred = m.Sigmoid(fc_1, "pred")
[softmax, loss] = m.SoftmaxWithLoss([pred, "label"], ["softmax", "loss"])
m.AddGradientOperators([loss])
workspace.RunNetOnce(m.param_init_net)
workspace.CreateNet(m.net)
# Run 100 x 10 iterations
print("Start to Train")
for j in range(0, 10):
data = np.random.rand(label_dim, data_dim).astype(np.float32)
label = (np.random.rand(label_dim) * 10).astype(np.int32)
workspace.FeedBlob("data", data)
workspace.FeedBlob("label", label)
workspace.RunNet(m.name, 10) # run for 10 times
print("%d:%f"%(j, workspace.FetchBlob("loss")))
print("End Training")
b.点击工具栏的运行或调试按钮,如果一切ok,会输出一下的迭代信息:
Build Net
Start to Train
0:2.324265
1:2.382756
2:2.357759
3:2.298997
4:2.331089
5:2.285640
6:2.336110
7:2.274807
8:2.366172
9:2.337986
End Training
5.代码