问题标签 [diffsharp]

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 回答
204 浏览

generics - F# Generic Math:如何使用 op_GreaterThan 编写函数

在 F# 中,如何编写通用数学步进函数?

(Oliver) Heaviside 阶跃函数是如果 x 为负数则返回零的函数,否则返回一。

以下是我迄今为止的尝试总结:

编译器说:错误FS0001:类型参数缺少约束'当^T:比较'

FSC 说:错误 FS0010:模式中出现意外的中缀运算符

动机:

我正在尝试在这里重写 Ian 的 Cumulative-Normal 和 Black-Scholes 函数以使用自动微分 (DiffSharp)。Ian 的累积法线适用于浮点数,我想要一个适用于任何数字类型的通用版本,包括 AutoDiff.DualG。累积法线函数包含“大于”语句。

编辑:Gustavo,谢谢,我已经接受了你的回答——现在可以编译简单的 step 函数。

但这似乎对累积正常情况没有帮助。鉴于此代码:

FSI 说:

有谁知道如何使 CDF 通用?

0 投票
2 回答
555 浏览

automatic-differentiation - 理解高阶自动微分

最近刚刚完成了用于机器学习目的的基本反向模式 AD,我发现自己想了解该领域,但我遇到了高阶方法的难关。

基本的反向广告非常简单易懂,但更高级的材料太抽象,太技术化,我在互联网上找不到任何好的解释(实际上我花了很多时间才实现基本的反向AD甚至存在。)

基本上,我了解如何在微积分的上下文中取二阶导数,但我不明白如何转换反向 AD 图以获得二阶导数。

在像edge_pushing这样的算法中,这些虚线连接是什么意思?

我调查了库 DiffSharp 并且我注意到它使用诸如正反向微分之类的东西来计算 Hessian。运行,通过调试器,我真的看到它实际上在一次运行中混合了正向和反向步骤。该机制背后的原理是什么?

DiffSharp 使用 jacobian-vector 积来计算每个变量的 Hessian,这是一个 R^m -> R^n 映射。这怎么可能从原始图表中得到呢?反向 AD 是一个 R -> R^n 映射,额外的维度从何而来?

最后,嵌套 AD 是如何工作的?

0 投票
0 回答
117 浏览

c# - 如何在 C# 中将 DiffSharp 的 DM 和 DV 相乘?

我有以下代码:

问题是我的声明W * v,它说"Operator * cannot be applied to operands of type DM and DV"。在 F# 中,它们以这种方式相乘。我们如何在 C# 中将这个矩阵和向量相乘?

0 投票
1 回答
174 浏览

f# - Converting System.Double[,] to DenseMatrix

The hessian function in Diffsharp returns something called System.Double[,]. Or if you hover on the variable it shows as a float[,]. This object seems a bit difficult to parse, I'm not sure why. This question is related but the answer doesn't seem general enough as it only deals with a specific size of matrix.

I'm wondering if anyone has any cleaner way than the following to massage this object into a DenseMatrix. The matrices returned will always be square.

I want to change this:

to this but cleanly:

Here is my code. This just looks a bit awkward amid the rest of the F# code.

0 投票
2 回答
245 浏览

c# - C# DiffSharp v0.7.7 寻找 FSharp.Core v4.4.0.0

我一直在尝试将最新版本的 DiffSharp (v0.7.7) 与 C# 一起使用。我不断收到以下错误:

错误 3 程序集 'DiffSharp, Version=0.7.7.0, Culture=neutral, PublicKeyToken=null' 使用 'FSharp.Core, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 它的版本比引用的程序集 'FSharp .Core,版本=4.3.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'

它似乎在寻找 FSharp.Core 版本 4.4.0.0。据我所知 - 不存在这样的事情。还是我错了?我在 Windows 10 上使用 Visual Studio 2012,并且已经完全更新了我能想到的所有内容。我的 .Net 版本是 4.6.1。

我尝试在 Stack Overflow 中也提到过此修复:无法加载文件或程序集 FSharp.Core,版本 = 4.0.0.0 Azure Web 角色

但它没有产生任何东西。

有没有人有过类似的经历?

任何想法/想法/解决方案将不胜感激。