我需要(在应用程序中)使用针对多个 CPU 或 GPU 进行了高度优化的极限学习机(ELM)。由于 ELM 主要计算涉及 Moore-Penrose 伪逆和矩阵乘法,在 Theano 和 Caffe 中实现 ELM 的最佳选择是什么?
其次,是否可以使用其 python 接口在 Caffe 中实现新的学习算法(ELM)?
我需要(在应用程序中)使用针对多个 CPU 或 GPU 进行了高度优化的极限学习机(ELM)。由于 ELM 主要计算涉及 Moore-Penrose 伪逆和矩阵乘法,在 Theano 和 Caffe 中实现 ELM 的最佳选择是什么?
其次,是否可以使用其 python 接口在 Caffe 中实现新的学习算法(ELM)?
如果我是你,我会使用 Theano,而不是 Caffe。Caffe不是围绕通用矩阵库进行编程的,因此对于 Caffe,您基本上会尝试使用螺丝刀打开啤酒。如果您确实想使用 C++,请查看 MrShadow 或任何其他基于 GPU 的矩阵库。
... 或者干脆将 Theano 与 Python 一起使用。
我不是 Python 的忠实粉丝,Theano 需要一些时间才能掌握,但它非常方便。
还有一两个 Python 的 ELM 库可以用作参考,当您需要测试自己的实现时,这是一个巨大的优势。
https://github.com/dclabert/Python-ELM
我没有使用过它们,所以我无法详细说明它们的状态,但有总比没有好。
你也可以看看 Keras 和 Lasagne,它们都是建立在 Theano 之上的神经网络库。就像 Caffe 一样,它们对 ELM 帮助不大,但它们会让你开始使用 Theano+nnets。然后您所要做的就是创建您自己的 ELM 层。
另一种解决方案是 PyTorch's torch.linalg.pinv()
,针对 GPU 计算进行了优化:
计算矩阵的伪逆(也称为 Moore-Penrose 逆)
input
或批处理中的每个矩阵input
。
就 Google 而言,Caffe 不会在“极限学习机”方面为您提供帮助。
其次,是否可以使用其 python 接口在 Caffe 中实现新的学习算法(ELM)?
不,那是不可能的。您将不得不在 C++ 中实现新的层和算法。之后,您可以通过 Python 处理它们。
有关 Caffe 的入门知识,请查看“使用 GPU 使用 Caffe 的神经网络”。