gpt4 book ai didi

c# - 推荐的 ILNumerics 优化包

转载 作者:行者123 更新时间:2023-11-30 20:55:10 25 4
gpt4 key购买 nike

我开始编写自己的机器学习包,采用 ILNumerics。

我肯定会学习神经网络、SVM、内核方法,然后我会开始学习更多的贝叶斯框架。

我知道 ILNumerics 已经提供了一些“机器学习工具箱”,但我想添加我的贡献并编写我自己的算法,也是因为某些功能(还没有?)

首先,据我所知,目前还没有包含任何优化包。我希望我错了;如果不是这种情况,将不胜感激有关如何通过 ILNumerics 实现它的任何建议;为此我的意思是:混合预先存在的代码会影响性能吗?混合 ILArray 和其他向量/矩阵是否可取?遵守快速指南中提供的建议是否足以利用出色的性能?

或者,如果您愿意,您会推荐任何预构建的可用优化包/库与 ILNumerics 结合使用吗?

非常感谢任何提示/建议,一如既往的建议,

GL

最佳答案

你在所有方面都是对的。目前 ILNumerics 中没有可用的优化包。但是,如您所知,.NET 的一大优势是易于合并外部包。这里有几个选项:

PInvoke( native 模块)

由于大多数现有优化包都作为 native 模块存在,因此 PInvoke 是您的 friend 。有几种工具可用于自动生成 DLLImport 签名。就个人而言,我更喜欢创建那些签名 manually .特别是,由于大多数科学包公开了一个简单的签名,该签名很容易合并到 .NET 中。然而,从 native 代码到托管代码的回调以及复杂结构的编码可能会出现问题。 (所以,我们将帮助您解决所有问题......

.NET 模块

您可能会找到一个现有的 .NET 优化模块。请参阅此帖子 (Free Optimization Library in C#) 或尝试 Microsoft Solver Foundation。更好的模块可能已经存在——我已经有一段时间没找了。除非非常小心地完成实现,否则它们可能会或可能不会由于糟糕的(无)内存管理而影响性能。 (据我所知,没有其他项目能像 ILNumerics 那样有效地跟踪内存?)。然而,连接这些库会很容易:不需要 DLLImport 签名。但是为了从 ILNumerics 内存管理中获益,您必须在“ILNumerics”端管理数组内存。因此,将一些 System.Array 提供给其他一些 .NET 函数的模式将是:

 .... inside ILNumerics function
using (ILScope.Enter(inparameter1,inparameter2)) {
....
ILArray<double> A = zeros(1000,1000); // allocate memory for external use
var aArray = A.GetArrayForWrite(); // fetch reference to underlying System.Array
callOtherLib(aArray); // let other lib use and fill the array
// proceed normally with A...
return A + 1 * 2 ... ;
}

如果其他库仅从给定数组读取,A.GetArrayForRead() 可能会提供更好的性能。通过使用该方案,可以确保最有效的内存使用——至少在您的实现的 ILNumerics 方面是这样。

混合两边的数据结构没有任何坏处——但通常也不会带来太多好处:这通常会削弱语法的便利性,因为混合矩阵实现没有组合运算符。此外,您通常会被迫将矩阵访问分解为逐元素操作,这可能会导致性能较低的解决方案。因此,我建议使用具有明确分离的 API 的模块化设计。

上述内存方案也适用(并推荐)用于连接 native 库。

仅使用 ILNumerics

当然,另一种方法是使用 ILNumerics 内置函数和数组功能自行重新实现一些模块。这种方式是强制性的,以便将任何包合并到官方 ILNumerics 发行版中。它带来了几个优点:可以利用方便的 ILNumerics 语法,自动从高效的 ILNumerics 内存管理中获益,代码最终将完全独立于平台。此外,这为您提供了关于算法所需功能的最大灵 active 。

关于c# - 推荐的 ILNumerics 优化包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18447022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com