python - 区分索引向量范数:索引不减少
问题描述
我想区分两个索引向量的差异范数,即计算d || x_a - y_b || / d x_a
。我已经设法手动创建规范表达式,因为我发现没有预先存在的方法来单独为单索引向量(上下文)制定它:
N, D = sp.symbols('N D', integer=True)
d = sp.Idx('d', D)
x = sp.IndexedBase('x')
a = sp.Idx('a', N)
y = sp.IndexedBase('y')
b = sp.Idx('b', N)
# Express || x_a - y_b ||
norm = sp.sqrt(sp.Sum((x[a, d] - y[b, d]) ** 2, (d, 0, D - 1)))
这一切都有效,但如上所述,我想区分其中一个变量。
norm.diff(x[a])
但是,这会失败,因为同时使用和x
进行索引。我希望求和可以减少向量维数,因为定义了维数并且求和是在整个范围内完成的。a
d
我不关心维度,只关心索引向量x[a]
和y[b]
,关于它我想区分一个更复杂的表达式。我肯定错过了什么。我该如何进行这种差异化?
我想到的一件事是,我可以滥用 L2 范数与绝对值表达式具有相似导数这一事实——允许丢弃第二个索引。但这似乎很hacky。并且通过初步测试,似乎表达式涉及实部和虚部或分段函数,这有点不方便。
解决方案
推荐阅读
- scala - 如何通过参数Class生成Function1并返回Class
- ruby-on-rails - Doorkeeper Rake 任务中未初始化的常量 Doorkeeper::AccessToken
- javascript - 循环生成的多个表单一键提交
- c# - Appium:通过 Auth0 登录,找不到正确的 PageSource/元素
- angular - 我想过滤还包含一个数组的嵌套 JSON
- java - 在Java中打印*的金字塔
- c# - 将 Umbraco 8 集成到现有的 .NET 解决方案中
- vb.net - 在 vb.net 中将项目添加到 DataGridViewComboBoxCell
- visual-studio - nuget.config 忽略依赖项的依赖项(子依赖项)
- gitkraken - 将所有内容重置为远程并跳过所有更改