如何在 chainer 中插入已经写入的 C/C++ 层

How to plugin already written C/C++ layer in chainer

我已经使用 CPU 编写了 C++ 层,我想插入 chainer 框架,该怎么做? chainer 可以将 CPU 和 GPU 层混合在一起吗?

您可以使用 Cython、pybind11 或任何工具从 Python 调用 C++ 代码,将您的 C++ 层嵌入到 Chainer 中。您必须编写一些粘合代码来执行此操作(例如,将 NumPy 数组缓冲区 from/to 转换为用 C++ 编写的层中使用的数据格式,并将层的接口转换为 Chainer 样式函数;后者应该是通过写一个小 Python class).

很容易做到

为了在您的 forward/backward 计算中混合使用 CPU 和 GPU,您可以使用 F.copy();它支持反向传播(参见 https://docs.chainer.org/en/stable/reference/generated/chainer.functions.copy.html?highlight=copy)。