前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Caffe2 - (六)CPU/GPU 模式切换

Caffe2 - (六)CPU/GPU 模式切换

作者头像
AIHGF
发布2019-02-18 10:17:03
1.1K0
发布2019-02-18 10:17:03
举报
文章被收录于专栏:AIUAIAIUAI

Caffe2 - CPU/GPU 部署模式切换

在尝试把 Caffe 模型转换到 Caffe2,部署时 CPU/GPU 模式切换方法找了很久才找到一个用着可以,记录下.

代码语言:javascript
复制
import sys
sys.path.insert(0, '/path/to/caffe2/build')
from caffe2.python import core, workspace, model_helper
from caffe2.proto import caffe2_pb2, caffe2_legacy_pb2

# -------- CPU/GPU 模式切换 -----
workspace.ResetWorkspace()
# device_opts = core.DeviceOption(caffe2_pb2.CPU, 0) # CPU 模式
device_opts = core.DeviceOption(caffe2_pb2.CUDA, 0) # GPU 模式,及 gpuid


# -------- 加载模型和参数 ------------
INIT_NET = 'init_net.pb'
PREDICT_NET = 'predict_net.pb'

init_def = caffe2_pb2.NetDef()
with open(INIT_NET, 'rb') as f:
    init_def.ParseFromString(f.read())
    init_def.device_option.CopyFrom(device_opts)
    workspace.RunNetOnce(init_def.SerializeToString())

net_def = caffe2_pb2.NetDef()
with open(PREDICT_NET, 'rb') as f:
    net_def.ParseFromString(f.read())
    net_def.device_option.CopyFrom(device_opts)
    workspace.CreateNet(net_def.SerializeToString())

name = net_def.name
output_name = net_def.external_output[-1] # 输出 blob 名
input_name = net_def.external_input[0] # 输入 blob 名

# -------- 送入数据 blob -----------
input_data = np.random.rand(2, 3, 227, 227).astype(np.float32) # NCHW
workspace.FeedBlob(input_name, input_data, device_opts) # device_opts:CPU/GPU 模式的选项

# -------- Forward ----------------
workspace.RunNet(name, 1)

# --------- 读取网络计算结果 --------
results = workspace.FetchBlob(output_name)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年01月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Caffe2 - CPU/GPU 部署模式切换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档