【发布时间】:2018-01-14 12:59:49
【问题描述】:
我已阅读 caffe2 教程并尝试过预训练模型。我知道 caffe2 将利用 GPU 来运行模型/网络。但是输入数据似乎总是来自 CPU(即主机)内存。比如Loading Pre-Trained Models中,模型加载完成后,我们可以通过
result = p.run([img])
但是,图像“img”应该在 CPU 范围内读取。我寻找的是一个可以将图像(从视频解码并仍然驻留在 GPU 内存中)直接传输到预测模型的框架,而不是将其从 GPU 复制到 CPU 范围,然后再次传输到 GPU 进行预测结果。 Caffe 或 Caffe2 是否为 python 或 C++ 提供了这样的功能或接口?还是我需要修补 Caffe 才能这样做?非常感谢。
这是我的解决方案:
我在tensor.h 中发现,函数ShareExternalPointer() 完全可以做我想做的事。
以这种方式输入 gpu 数据,
pInputTensor->ShareExternalPointer(pGpuInput, InputSize);
然后运行预测网络
pPredictNet->Run();
其中pInputTensor 是预测网络pPredictNet 的入口张量
【问题讨论】: