1

我有一个训练有素的 Chainer 模型,我想用它来执行预测。默认情况下,我可以在 CPU 上预测图像,但我想使用 GPU,我不知道该怎么做。这是我的代码的样子:

model = MyModel()
chainer.serializers.load_npz("snapshot", model)
image = load_image(path) # returns a numpy array

with chainer.no_brackprop_mode(), chainer.using_config("train", False):
    pred = model.__call__(image)

这在 CPU 上运行良好。我应该添加什么来预测 GPU ?我试过了:

  • model.to_gpu(0)
  • chainer.cuda.get_device_from_id(0).use()
  • 将图像转换为 CuPy 数组image = cupy.array(image)

使用所有这些选项,我得到一个错误:

ValueError: numpy and cupy must not be used together
type(W): <type 'cupy.core.core.ndarray'>, type(x): <type 'numpy.ndarray'>

我在这里做错了什么?如何在 GPU 上执行预测?提前感谢您的帮助。

4

1 回答 1

2

我终于找到了一种让它工作的方法:我没有使用cupy.array(image),而是使用了cuda.to_gpu(image)then cuda.to_cpu(image)。我不确定这些之间的区别,但它仍然有效。

于 2018-07-30T15:12:08.400 回答