问题标签 [hmatrix]
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.
haskell - 如何对hmatrix进行自动微分?
太棒了……事实证明,从假矩阵到hmatrix
数据类型的转变是不平凡的:)
序言供参考:
以及对gradientDescent
函数的调用:
编辑:这不是原始问题中的代码,而是尽可能地归结起来。GHC 需要对子功能进行一些限制go
,但链接问题中提出的答案不适用于此处。
edit2,从下面引用我自己的话:
我开始相信这是不可能的。
Matrix
要求它的元素在Element
类中。唯一的元素Double
,Float
以及它们的Complex
形式。所有这些都是不被接受的gradientDescent
。
所以基本上这与上面链接的问题相同,但是对于hmatrix
数据类型而不是我的手动处理的问题。
编辑3
Edward Kmett 和 Dominic Steinitz 之间的相关电子邮件对话:https ://mail.haskell.org/pipermail/haskell-cafe/2013-April/107561.html
haskell - 使用 hmatrix-gsl-stats 对随机分布进行采样时如何推进 RNG 状态?
当我从随机分布中采样时,如何在 hmatrix-gsl-stats 中推进 RNG:例如:
haskell - 如何从自动微分中获得更多性能?
我很难优化一个依赖ad
sconjugateGradientDescent
函数完成大部分工作的程序。
基本上我的代码是用 Matlab 和 C 编写的旧论文代码的翻译。我没有测量它,但该代码每秒运行几次迭代。我的每次迭代大约需要几分钟...
该代码在此存储库中可用:
可以通过以下命令运行有问题的代码:
使用 GHC 分析工具,我已经确认下降实际上是花费大部分时间的部分:
(此处的交互式版本:https ://dl.dropboxusercontent.com/u/2359191/learngabors.svg )
-s
告诉我生产力很低:
从我收集的信息来看,有两件事可能会导致更高的性能:
拆箱:目前我使用自定义矩阵实现(在 中
src/Data/SimpleMat.hs
)。这是我可以ad
使用矩阵的唯一方法(请参阅:如何在 hmatrix 上进行自动微分?)。newtype Mat w h a = Mat (Unboxed.Vector a)
我的猜测是,由于拆箱和融合,使用类似矩阵类型会获得更好的性能。我发现了一些包含未装箱向量实例的代码,ad
但到目前为止,我还无法将这些与conjugateGradientFunction
.矩阵导数:在一封电子邮件中,我现在找不到 Edward 提到使用
Forward
矩阵类型的实例而不是用Forward
实例填充矩阵会更好。我对如何实现这一点有一个模糊的想法,但还没有弄清楚我将如何根据ad
s 类型类来实现它。
这可能是一个在 SO 上无法回答的问题,所以如果您愿意在这里帮助我,请随时在 Github 上与我联系。
haskell - 如何在haskell中添加两个矩阵
我正在尝试使用 Haskell 的线性代数库来计算一些特征值,但首先我需要先尝试添加矩阵。
但是,如果我尝试代表另一种方式,我会收到错误消息
我什至不确定,matrix 3 [1,2,3,4,5,6,7,8,9 ]
因为我想指定我想要一个 3 × 3 矩阵。其他三个去哪儿了?
windows - 如何在 Windows 下使用 BLAS 和 LAPACK 构建 hmatrix?
Windows 10 x64 阴谋集团 1.22
我正在遵循 Windows 部分中的步骤https://github.com/AlbertoRuiz/hmatrix/blob/master/INSTALL.md
我下载了 hmatrix 源代码和 gsl-lapack-windows.zip。当我尝试安装 hmatrix 时:
D:\Projects\workspace\hmatrix-0.16.1.5>cabal install --extra-include-dirs=D:\Projects\workspace\gsl-lapack-windows\ --extra-lib-dirs=d:\Projects\workspace \gsl-lapack-windows\
我收到了我仍然无法解决的消息:
配置 hmatrix-0.16.1.5... 无法安装 hmatrix-0.16.1.5 构建日志( D:\Projects\workspace\hmatrix-0.16.1.5.cabal-sandbox\logs\hmatrix-0.16.1.5.log ):配置 hmatrix -0.16.1.5... setup-Simple-Cabal-1.22.4.0-x86_64-windows-ghc-7.10.2.exe: 缺少对外部库的依赖: * 缺少 C 库: blas, lapack, blas, lapack 这个问题可以通常通过安装提供这些库的系统包来解决(您可能需要“-dev”版本)。如果库已经安装但在非标准位置,那么您可以使用标志 --extra-include-dirs= 和 --extra-lib-dirs= 指定它们的位置。cabal:错误:某些软件包无法安装:hmatrix-0.16.1.5 在配置步骤中失败。例外是:ExitFailure 1
“-dev 版本”我认为仅适用于基于 *nix 的操作系统。在我给 cabal 的文件夹中,有 blas.dll 和 lapack.dll。
可能是什么问题呢?
haskell - hMatrix 在文件中中断,可能是什么原因?
我一直在 ghci 环境中使用 hMatrix 包,一切正常(例如,我可以导入 Numeric.LinearAlgebra.HMatrix)。但是,当我尝试在脚本中导入和使用相同的内容时,一切都会中断(为了便于阅读,我略微截断了错误消息(_base_GHCiIO-errors 的更长列表))。例如,文件中的这两行会创建以下错误。有谁知道可能是什么原因?我在 Mac OS X Yosemite 上。
haskell - 无法成功安装 plot Haskell
我想在我的 Haskell 程序中做一些绘图,但是当我尝试安装 plot 时,我收到以下错误。
在此问题之后,我将 hmatrix 更新为版本0.17.0.1
,但仍然出现相同的错误。有任何想法吗?
file - 如何将多个矩阵从单个文件解析为 hmatrix?
我有一个 txt 文件,其中包含几个不同维度的整数矩阵,我想将其解析为 hmatrix 包表示,但我找不到任何合适的函数。文本文件包含以下形式:
例如
我发现的最接近的地方是readMatrix
:
但由于没有文档,而且我对 Haskell 还很陌生,我不知道如何使用它。
haskell - Haskell hmatrix:向量/标量交互的类型错误?
我遇到了这些奇怪的标量和矩阵在 hmatrix 中表现奇怪的情况。如果我不键入注释,则该操作会自动运行 ala matlab/python。但是,如果我确实使用“R”或类型或“Double”对标量进行类型注释,则会出现类型错误。
为什么是这样?
haskell - 如何从列表中删除逗号和括号( hmatrix )
用于在 gnuplot 中绘制图形
我正在尝试将此矩阵打印到文件中,但是要在 gnuplot 中执行它,我需要创建一个没有逗号和括号的文件,我该怎么做?