引言
对官方例程中所用到的Python接口的用法做一个归纳,方便查询(并不是所有,只是例程中出现过的)。
目录
往期传送门
- Caffe实战之Python接口系列(一)Classification_Visualization
- Caffe实战之Python接口系列(二)Learning-LeNet
- Caffe实战之Python接口系列(三)Fine-tuning a Pretrained Network
- Caffe实战之Python接口系列(四)Brewing Logistic Regression then Going Deeper
- Caffe实战之Python接口系列(五)Multilabel classification on PASCAL using python data-layers
- Caffe实战之Python接口系列(六)Net Surgery(Editing model parameters)
- Caffe实战之Python接口系列(七)R-CNN detection
- Caffe实战之Python接口系列(八)Siamese Network Tutoria
常用的模块
import sys # 用于管理sys.path,也就是python的搜索路径,如:sys.path.append()或者.insert()都是达到临时添加的效果,不过.insert()可以设置优先级(列表的前后位置)
import os # 用于路径目录方面的操作,如os.path.isfile(),os.chdir()改变当前工作目录
import os.path as osp # 简写模式
import tempfile # 管理临时文件
import pandas as pd # 用于数据分析,如pd.read_hdf(),pd.DataFrame(),pd.Series()
import numpy as np
import matplotlib.pyplot as plt # 绘图,常见参数设置有'figure.figsize'、'image.cmap'
from pylab import * # 结合pylot和numpy到单个命名空间,这对于交互式工作很方便,但是对于编程,建议将命名空间保持独立,也就是上面两行。
import caffe # 常用于加载已有网络模型
from caffe import layers as L, params as P # 用于访问和设置各种层类型
from caffe.proto import caffe_pb2 # 用于定义求解器
1. 网络的初始化
1.1. 网络模式设置
# 使用CPU模式
caffe.set_mode_cpu()
# 使用GPU模式
caffe.set_device(0) # 用于指定GPU设备
caffe.set_mode_gpu()
caffe.set_random_seed() # 固定随机种子用于复现
1.2. 用模型prototxt加载网络(net = caffe.Net版,常用于部署)
net = caffe.Net(model_def, # 定义模型架构的prototxt文件
model_weights, # 训练好的权重参数
caffe.TEST) # 使用模型的TEST模式
1.3. 用求解器prototxt加载网络(solver = caffe.get_solver/SGDSolver版,常用于训练)
solver = caffe.SGDSolver('solver.prototxt') # 仅用于加载SGD求解器
solver = caffe.get_solver(solver_config_path) # 允许加载其他求解器类型
solver.net.copy_from(weights)