赞
踩
深度学习框架集成平台C++ Guide指南
这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型。
提示
所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括TensorFlow、PyTorch、Keras和TorchScript)中的模型。
导入神经网络
最简单的导入方法如下:
#include “neuropod/neuropod.hh”
Neuropod neuropod(PATH_TO_MY_MODEL);
其中PATH_TO_MY_MODEL是使用其中一个打包程序导出的模型的路径。
选项
您还可以在加载模型时提供运行时选项。
要选择运行模型的设备,可以指定“visible_device”选项:
neuropod::RuntimeOptions opts;
// Set the
visible device to the first GPU
opts.visible_device = Device::GPU0;
Neuropod neuropod(PATH_TO_MY_MODEL, opts);
默认为GPU0。如果没有可用的GPU,将尝试退回到CPU。
设置opts.visible_device = Device::CPU将强制模型在CPU上运行。
获取模型的输入和输出
要获取模型的输入和输出,可以执行以下操作:
Neuropod neuropod(PATH_TO_MY_MODEL);
// Both of these
are std::vector<TensorSpec>
const auto &inputs = neuropod.get_inputs();
const auto &outputs = neuropod.get_outputs();
for (const auto &item : inputs)
{
// A `TensorSpec` is a struct with a `name`, `dims` and `type`
std::cout << "Tensor name: " << item.name << std::endl;
}
Tensor张量类型
支持以下Tensor张量类型:
·
float
·
double
·
string
·
int8
·
int16
·
int32
·
int64
·
uint8
·
uint16
·
uint32
·
uint64
提示
PyTorch或TorchScript不支持uint16、uint32和uint64。请参阅PyTorch文档中支持的类型列表。
TorchScript不支持字符串Tensor张量,因此我们将它们表示为字符串列表。因此,TorchScript-Neuropod模型只支持一维字符串“Tensor张量”。请参见此处的用法示例。
创建Tensor张量
提示
有关最适合您的用例的方法的指南,请参见高效张量创建页面。
有很多不同的方法来创建神经网络Tensor张量,但是所有的方法都是从分配器开始的。
要获取加载模型的分配器,可以执行以下操作:
Neuropod neuropod(PATH_TO_MY_MODEL);
auto allocator = neuropod.get_tensor_allocator();
对于未加载模型的场景(例如单元测试&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。