【问题标题】:Using multiprocessing in custom operators在自定义运算符中使用多处理
【发布时间】:2018-10-29 08:26:20
【问题描述】:

在自定义运算符的代码中,我有这样几行:

 for i in xrange(batch_size):
    numpy.XXX

为了获得更好的性能,我使用了多处理。但是卡住了。

【问题讨论】:

    标签: python mxnet


    【解决方案1】:

    您的自定义运算符的完整示例可能有助于诊断问题,但我可以根据您提供的代码 sn-p 给出一些建议:

    1. 不要在自定义运算符中使用 numpy。问题是,使用 Numpy 最终会迫使 MXNet 将数据移动到 CPU 中,与使用 GPU 获得的计算相比,计算速度会更慢。使用 NumPy 是不可能使用 GPU 的。

    2. 不要使用 foreach 循环遍历批处理中的项目。由于性能原因,MXNet 的所有算子都支持批量输入。

    3. 如果您仍需要在自定义运算符中为其他维度使用循环,请使用foreach operator。它的制作方式可以与NDArraySymbol 一起使用。查看tutorial如何使用它。

    【讨论】:

    • 谢谢! NDArray 中没有“numpy.where”,我认为“numpy.where”在 CPU 中性能更好。我在图像检测中使用 foreach 进行自定义提案。
    猜你喜欢
    • 2019-01-15
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多