问题标签 [numsharp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
71 浏览

c# - 与显式类型参数相比,使用“object”参数时的 C# NumSharp 未定义行为

我正在使用NumSharp并且对它有点陌生。我想设置多个数据值,主要关注两个功能:

第一个SetValue期望单个值元素的完整索引,例如,如果您拥有np.zeros(3,3)它期望完整索引,并且如果缺少索引,它将使用0它的位置。

例如:

两条线是等价的。

另一方面,SetData将根据索引修改整个子数组,如果给出完整索引,它的工作方式类似于SetValue. 例如:

现在,对于我的用例,我想重新定义一个接受多个值并将每个值视为子数组索引的函数。

自然,我选择了一种扩展方法:

但这就是完全失去我的地方。此代码不使用扩展方法,有效:

输出:

[[10, 10, 10],[10, 10, 10],[0, 0, 0]]

此代码不会:

输出:

[[10, 0, 0],[0, 0, 0],[0, 0, 0]]

这并不总是会打印,在大多数情况下它只是无法打印,我相信底层arr结构已相应损坏,当我多次运行它时会导致未定义的行为。

现在,最后一点。当我将Extension方法更改为 acceptdouble而不是 时object,它可以完美运行。但是我需要扩展方法来处理多种类型,因为它只是SetData. 鉴于此,我还尝试将方法更改为通用:

当这不起作用并产生相同的输出时,我感到震惊。基本上,我进行了从对象到类型的显式转换。我这样调用函数:我使用调试器并比较了与它一起工作的代码,类型与传递给给定andarr.SetMultiData<double>(value, indicies);的类型完全相同,但一个有效,一个无效。arr.SetValuei = intval = double

是什么导致了这种行为?为什么当我明确地将它设置为double使用泛型/object类型都失败时它会起作用?

作为参考,这里是SetData实现。这是开源的。

0 投票
2 回答
88 浏览

c# - CSharp:无法读取 LARGE .npy 文件。例外是“NumSharp.dll 算术运算导致溢出”。

我正在尝试在 CSharp 中读取一个大的 .npy 文件。为了做到这一点,我正在尝试使用NumSharp nuget。

该文件是 7GB 锯齿状浮点数组 (float[][])。它有大约 100 万个向量,每个向量都是 960 维。

注意: 更具体地说,我使用的数据是来自以下链接Approximate Nearest Neighbors Large datasets的 GIST 。

以下是我用来加载数据的方法,但它失败并出现异常:

例外是:

引发异常:NumSharp.dll 中的“System.OverflowException” NumSharp.dll 中发生“System.OverflowException”类型的未处理异常算术运算导致溢出。

我该如何解决这个问题?


更新

如果文件太大,NumSharp 包有限制。阅读下面的评论/答案以获得更多解释。我添加了一个带有解决方法建议的答案

但是,一个好的选择是将数据保存为 .npz(请参阅:numpy.savez()),然后以下包可以完成这项工作:

https://github.com/matajoh/libnpy

代码示例:

0 投票
1 回答
25 浏览

c# - NumSharp 对应的 numpy.c_ 是什么?

我正在将python的 tensorflow 程序翻译成C#。而且我不知道如何处理这种方法。我搜索,但NumSharp文档启用的文档似乎很差(如果我忽略了,请指出我的发现)。
您能帮我找出Numsharp中存在相同的方法或其他具有相同效果的方法吗?
先谢过~