问题标签 [convergence]
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.
c++ - 尽管类具有很强的依赖性,但设计灵活
我正在编写一个本质上需要非常灵活的代码,即以后也很容易被其他人扩展。但我现在面临一个问题,我什至不知道原则上如何正确处理:
我有一个相当复杂Algorithm
的 ,在某些时候应该会收敛。但由于其复杂性,有几个不同的标准来检查收敛,并且根据情况(或输入),我希望激活不同的收敛标准。此外,无需触及算法本身,就可以轻松创建新的收敛标准。所以理想情况下,我希望有一个抽象ConvergenceChecker
类,我可以从中继承并让算法有一个向量,例如:
这样做的问题是每个人都ConvergenceChecker
需要了解有关当前正在运行的内容Algorithm
,但每个人可能需要了解与算法完全不同的事情。说出每个周期中的Algorithm
变化_foo
_bar
和,但一个可能只需要知道,另一个可能只需要知道 ,并且可能有一天会实现需求。以下是我已经尝试解决的一些方法:_fooBar
ConvergenceChecker
_foo
_foo
_bar
ConvergenceChecker
_fooBar
- 给函数
isConverged()
一个大参数列表(包含_foo
、_bar
和_fooBar
)。缺点:大多数用作参数的变量在大多数情况下都不会使用,并且如果Algorithm
将由另一个变量扩展(或类似的算法从它继承并添加一些变量),则必须修改相当多的代码。-> 可能,但丑陋 - 将函数本身(或指向它
isConverged()
的Algorithm
指针)作为参数。问题:循环依赖。 - 声明
isConverged()
为友元函数。问题(除其他外):不能定义为不同ConvergenceChecker
s 的成员函数。 - 使用函数指针数组。根本没有解决问题,还有:在哪里定义它们?
- (刚刚在写这个问题时想出了这个)使用一个不同的类来保存数据,比如
AlgorithmData
作为Algorithm
一个朋友类,然后提供AlgorithmData
作为函数参数。所以,就像 2. 但也许可以解决循环依赖问题。(尚未对此进行测试。)
我很高兴听到您对此的解决方案(以及您在 5. 中看到的问题)。
进一步说明:
- 问题标题:我知道“强依赖类”已经说过,很可能有人在设计代码时做错了什么,但我想很多人最终可能会遇到这个问题,并想听听可能性避免它,所以我宁愿保持那个丑陋的表情。
- 太简单了?:其实我这里提出的问题并不完整。代码中会有很多不同
Algorithm
的 s 相互继承,ConvergenceChecker
当然即使有新Algorithm
的 s 出现,s 也应该在适当的情况下理想地工作而无需任何进一步的修改。也欢迎对此发表评论。 - 问题风格:希望问题既不太抽象也不太特别,希望不要太长,通俗易懂。因此,请不要犹豫,对我提出这个问题的方式发表评论,以便我可以改进。
opengl - 减少 3D 网格中的透视度(减少收敛)
请看下图:
哪种数学方法或 POV-Ray/OpenGL 命令会减少这样的网格的收敛?(网格收敛太快;为了这个目的, theta 应该是 90 度,匹配中心线。)
仍然需要透视,但收敛速度应该较慢,就好像距离更短或者您使用的是远摄镜头一样。
尽管此图像来自 Blender,但使用的方法是 OpenGL 和 POV-Ray,因此任何一种方法的解决方案都会受到赞赏。
我有一些用 OpenGL 和 POV-Ray 建模的线条。
我在 POV-Ray 中尝试了位置、观察、角度、向右和向上,包括旋转、缩放、平移和矩阵等相机转换。
在 OpenGL 中,我尝试过gluPerspective、glFrustum和glDepthRange。
有没有人可以解决这个问题?
(此外,在这种情况下,不能俯视网格)
r - 仅计算迭代子集的 Gelman 和 Rubins 收敛统计量(coda 包)
我正在尝试为我目前使用 R 包在 R 中运行的 JAGS 分析计算 Gelman 和 Rubin 的收敛诊断rjags
。
例如,我想评估我的参数的收敛诊断beta
。为此,我使用库 coda 和命令:
具有out_2MCMC
多个链的 MCMC 列表对象,从而导致正确的输出而没有错误消息或任何内容。但是,由于我使用大量迭代作为老化,我想仅计算迭代子集的收敛诊断(仅老化后的部分!)。
为此,我尝试了:
这导致了以下错误:
因此,我尝试了:
但是,令人惊讶的是,这导致了以下错误:
由于这与我从 JAGS 分析中获得的 MCMC 列表对象相同,并且与我在评估所有迭代的收敛诊断时使用的相同(它工作得非常完美),我在这里看不到问题。
该函数本身仅提供在收敛诊断计算中使用系列的后半部分(迭代)的选项。由于我的老化阶段比这更长,不幸的是这对我来说还不够。
我想这是很明显的事情,我只是想念。有没有人有任何建议或提示?
由于代码很多,我没有提供 R 代码来运行完整的 2MCMC-JAGS 分析。我希望上面的代码能够很好地说明问题,也许有人以前遇到过同样的问题,或者识别出我的语法中的任何错误。但是,如果您觉得需要完整的代码来理解我的问题,我仍然可以提供运行 2MCM JAGS 分析的示例代码。
r - 神经网络:克服算法的不收敛性
我想使用 R 中的“neuralnet”包训练一个神经网络。训练数据集是一个包含 8 个预测变量(x1、x2、x3、...、x8)和 1 个响应变量(y)的数据框。数据如下:
型号规格如下:
执行完成后,会产生如下警告消息:
当我尝试绘制网络时,出现一条错误消息:
我在每一层中使用了不同数量的隐藏神经元,范围从 1 到 10,数量远远超过 10。该模型是在 hidden 的值等于 1 和 2 时生成的,而不是其他值。我还尝试使用不同的激活函数来平滑结果。数据没有 NA 值。谁能帮我理解这是为什么以及如何解决?
algorithm - 价值迭代的收敛
为什么值迭代算法的终止条件(例如http://aima-java.googlecode.com/svn/trunk/aima-core/src/main/java/aima/core/probability/mdp/search/ValueIteration.java )
在 MDP(马尔可夫决策过程)中是
||Ui+1-Ui||< 误差*(1-gamma)/gamma, 其中
Ui 是效用向量
Ui+1 更新的效用向量
error - 算法中使用的错误界限
算法中使用的 gamma 折扣因子
“error*(1-gamma)/gamma”从何而来?“除以伽玛”是因为每一步都被伽玛打折吗?但是错误*(1-伽玛)?错误必须有多大?
java - 无法测试神经网络的收敛性
我正在使用 Weka 多层感知器分类器进行分类。我想知道神经网络收敛了多少个时期(权重不再更新)。
我正在使用它的 Java API,但我无法找到获取权重变量并测试它们是否仍在循环中变化的方法。
statistics - 在 SAS NLIN 中记录不收敛
我有一个关于 SAS-proc nlin 的问题。
我正在执行 10000 次模拟的过程。他们中的许多人没有收敛并给我错误的结果。
我想在我的输出表中添加一个二进制变量,表示此迭代没有收敛。
有谁知道这是怎么做到的吗 ?
非常感谢,
佩里
c - For循环,语法C错误?
这些“for”循环有什么问题吗?关于语法..?它编译。结果在程序运行时开始增加,没有任何物理意义。i 和 j 索引是正确的。这些循环是长代码的一部分,但在调试后似乎错误不在其他任何地方。
谢谢!
python - 如何将 Statsmodels 警告变成异常
Python 和 Panda 新手在这里。我正在尝试使用 statsmodels 来拟合逻辑回归来计算选民投票的概率。我在辖区一级工作;所以有时函数不收敛,我收到以下错误:警告:已超过最大迭代次数。
我已经将最大迭代次数增加到 1000 次。然后我试图将那个“警告”变成一个异常。我已导入警告并包含 warnings.simplefilter('error', Warning) 以尝试捕获它,但它似乎不是真正的 Python 警告。相反,它是 statsmodels 在达到最大迭代次数时打印出来的。
所以现在我想知道是否有办法说:
algorithm - 解的 K-means 聚类唯一性
k-means 聚类算法是否总是产生相同的解决方案?初始化应该是随机的,那么无论初始化如何,聚类都会收敛到相同的结果吗?