这可能看起来像是一个 X Y 问题,但最初我有大量数据并且我无法在给定的资源(RAM 问题)上进行训练。所以我想我可以使用 Pytorch
的 batch
特性。但是除了深度学习,我想使用 KNN、随机森林、聚类等方法。那么我是否可以在 Pytorch 中使用 scikit 库?
最佳答案
更新
目前,有一些使用 GPU 的 sklearn
替代方案,最突出的是由 rapidsai 提供的 cuML
(链接 here)。
上一个答案
我建议不要仅出于使用批处理的目的使用PyTorch
。
论证如下:
scikit-learn
has docs about scaling在哪里可以找到 MiniBatchKMeans还有其他选项,例如partial_fit
方法或warm_start
参数(与 RandomForest 一样,check this approach)。- 如果没有使用磁盘缓存的手工实现,KNN 无法轻松使用,因为它将整个数据集存储在内存中(并且您缺少 RAM)。无论哪种方式,这种方法都非常低效,不要尝试。
- 您很可能无法创建与 scikit 中的算法相当的算法(至少不能独自完成,并且需要大量工作)。最好的选择是使用经过实战检验的解决方案(即使目前它仍然是
0.2x
)。通过 numba 应该可以提高一些速度但这超出了这个问题的范围。也许您可以将 CUDA 用于不同的算法,但这是一项更重要的任务。
总而言之,PyTorch
适用于大量使用 CUDA 的深度学习计算。如果您需要神经网络,这个框架是目前最好的框架之一,否则请使用 sklearn
或 other frameworks allowing incremental training 之类的东西.您始终可以使用 numpy()
和 pytorch
中的其他一些调用轻松地桥接这两者。
编辑:我发现 KNN 实现可能符合您的要求 in this github repository
关于python-3.x - 如何在 Pytorch 中使用 KNN、随机森林模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663672/