Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高效收敛检查

高效收敛检查
EN

Stack Overflow用户
提问于 2010-12-17 11:02:53
回答 3查看 1.7K关注 0票数 1

我有一个有数千个双精度实数的网格。

它正在迭代,当它收敛到3位小数时,我需要它停止。

目标是让它尽可能快地运行,但每次(到3DP)都需要给出相同的结果。

在我做这样的事情的那一刻

代码语言:javascript
运行
AI代码解释
复制
REAL(KIND=DP) :: TOL = 0.001_DP

DO WHILE(.NOT. CONVERGED)
    CONVERGED = .TRUE.
    DO I = 1, NUM_POINTS
        NEW POTENTIAL = !blah blah blah
        IF (CONVERGED) THEN
            IF (NEW_POTENTIAL < OLD_POTENTIAL - TOL .OR. NEW_POTENTIAL > OLD_POTENTIAL + TOL) THEN
                CONVERGED = .FALSE.
            END IF
        END IF
        OLD_POTENTIAL = NEW POTENTIAL
    END DO  
END DO

我在想,很多IF语句不会对性能有太大的影响。我想过在最后检查收敛性;找出平均值(对整个网格求和,除以num_points),然后检查它是否以与上面相同的方式收敛,但我不相信这总是准确的。

做这件事的最好方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-17 12:20:48

如果我没理解错的话,你有某种时间步进,你在new_potential中通过在old_potential上的计算来创建值。然后让旧的等同于新的,继续前进。

您可以使用单个语句替换现有的收敛测试

代码语言:javascript
运行
AI代码解释
复制
converged = all(abs(new_potential - old_potential)<tol)

这样可能会更快。如果测试的速度是一个主要问题,你可以每隔一次测试一次(或者每三次或四次...)迭代

下面是一些评论:

1)如果您使用具有2个平面的潜在数组,而不是old_和new_potential,则可以通过在每次迭代结束时交换索引来将new_转换为old_。在您的代码中,会有大量的数据移动。

2)虽然在语义上使用While循环是正确的,但我总是使用迭代次数最多的do循环,以防永远不能满足收敛标准。

3)在您的声明REAL(KIND=DP) :: TOL = 0.001_DP中,关于TOL数值的DP规范是多余的,REAL(KIND=DP) :: TOL = 0.001就足够了。我也会把它设为一个参数,如果编译器知道它是不可变的,它可能会优化它的使用。

4)您实际上不需要在最外层的循环中执行CONVERGED = .TRUE.,在第一次迭代之前设置它--这将为您节省一两纳秒。

最后,如果您的收敛标准是潜在数组中的每个元素都收敛到3dp,那么这就是您应该测试的。为你建议的平均值构造反例相对容易。然而,我担心的是你的系统永远不会在每个元素上收敛,你应该使用一些矩阵范数计算来确定收敛性。因此,在这个主题中不是一个教训的地方。

票数 3
EN

Stack Overflow用户

发布于 2010-12-17 18:02:19

收敛标准的计算方法是什么?除非它们比计算更糟糕,否则让IF语句尽快终止循环可能会更好,而不是猜测非常大量的迭代,以确保获得良好的解决方案。

Re High Performance Mark的建议#1,如果复制操作是运行时的重要部分,您也可以使用指针。

确定这些东西的唯一方法是测量运行时间……Fortran提供了测量CPU和时钟时间的内部函数。否则,你可能会修改你的代码的某一部分,使其更快,可能会使它更不容易理解,并可能引入错误,可能不会在运行时有太多改进……如果这一部分只占总运行时间的一小部分,那么再多的聪明也不会有多大的不同。

正如High Performance Mark所说,尽管当前的语义很优雅,但您可能希望防止无限循环。一种方法是:

代码语言:javascript
运行
AI代码解释
复制
PotentialLoop: do i=1, MaxIter

  blah

  Converged = test...
  if (Converged) exit PotentialLoop

  blah

end do PotentialLoop

if (.NOT. Converged) write (*, *) "error, did not converge"
票数 0
EN

Stack Overflow用户

发布于 2011-03-02 22:03:46

代码语言:javascript
运行
AI代码解释
复制
I = 1
DO
  NEWPOT = !bla bla bla
  IF (ABS(NEWPOT-OLDPOT).LT.TOL) EXIT
  OLDPOT = NEWPOT
  I = MOD(I,NUMPOINTS) + 1
END DO

也许更好

代码语言:javascript
运行
AI代码解释
复制
I = 1
DO
  NEWPOT = !bla bla bla
  IF (ABS(NEWPOT-OLDPOT).LT.TOL) EXIT
  OLDPOT = NEWPOT
  IF (I.EQ.NUMPOINTS) THEN
    I = 1
  ELSE
    I = I + 1
  END IF
END DO
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4469847

复制
相关文章
摄像机标定和立体标定
尝试用OpenCV来实现立体视觉也有一段时间了,主要的参考资料就是Learning OpenCV十一、十二章和OpenCV论坛上一些前辈的讨论。过程中磕磕碰碰,走了不少弯路,终于在前不久解决了最头大的问题,把整个标定、校准、匹配的流程调试成功。(虽然还有一些问题至今尚未搞清) 在这里写这篇文章,第一方面是给自己一个总结,第二方面是感觉OpenCV立体视觉方面的资料还是相当零散和不完整,新手入门需要花很长时间才能摸索出来,第三方面,也是自己在过程中有些问题仍旧迷迷糊糊,希望可以抛砖引玉。 1. 摄像头 我用的
智能算法
2018/04/02
2.1K0
摄像机标定和立体标定
FPGA VR摄像机-拍摄和拼接立体 360 度视频
本文主要介绍第二版本,第二版本的 VR 摄像机,能够以 30fps 的速度拍摄 4k(3840 x 1920)立体 360 度视频,同时在摄像机上实时拼接和编码。除了最终的 H.264 编码将在 Nvidia Jetson TX2 上执行之外,所有图像处理功能都将在 FPGA 上执行。
碎碎思
2023/08/30
4070
FPGA VR摄像机-拍摄和拼接立体 360 度视频
Mysql安全基线
Mysql安全基线 NO.1 增强root帐户密码登陆、删除空密码 原因 一、简单密码容易暴力破解二、mysql默认是空密码 解决 一、增强密码强度- 22位以上- 同时包含大写字母、小写字母、数字、特殊字符- 密码不重复使用- 密码定期更换(60天、90天)二、给空密码帐号加上密码mysqladmin -u root password “newpassword”mysql> use mysql;mysql> update user set password=password(‘newpassword’)
零式的天空
2022/03/16
1K0
一篇文章认识《双目立体视觉》
双目立体视觉,由两个摄像头组成,像人的眼睛能看到三维的物体,获取物体长度、宽度信息,和深度的信息;单目视觉获取二维的物体信息,即长度、宽度。
一颗小树x
2021/05/15
10.3K1
一篇文章认识《双目立体视觉》
基线估计
以深度学习为代表的现代机器学习方法在预测和分类准确性上取得了巨大的成功。在机器学习中,典型的学习过程首先将可用的训练数据拆分为训练、验证和测试集,我们在训练集上训练模型,在验证集上验证超参数,在测试集上验证模型的性能。但是在实际应用中,性能良好的测试集模型将如何发挥作用?如果模型A在测试集上的性能优于模型B,这是否意味着在实际应用中A模型的效果更好?实际上有许多因素会影响模型的实际落地效果,如测试集的分布与模型训练数据存在分布差异,模型在预测或分类时是不可靠的,且这种误差不可评估。
慎笃
2021/09/15
9370
MIT黑科技:无需视觉输入,立体声音频+摄像机元数据即可实现移动车辆定位
作者:Chuang Gan、Hang Zhao、Peihao Chen、David Cox、Antonio Torralba
机器之心
2019/11/11
7800
MIT黑科技:无需视觉输入,立体声音频+摄像机元数据即可实现移动车辆定位
双目视觉简介
双目立体视觉,在百度百科里的解释是这样解释的:双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。
点云PCL博主
2019/07/30
1.9K0
双目视觉简介
安全基线[Nginx]
Nginx安全基线 NO.1 禁止某些文件类型的访问 原因 某些文件不小心传如web目录后存在很大风险 解决 location *.(txt doc docx rar zip)$ root /var/www/www.xxx.xxx; Deny all; } NO.2 禁止访问某目录 原因 一些敏感目录禁止直接访问 解决 location ^/(web-inf)/{ Deny all; } NO.3 禁止某个IP或网段访问 原因 限制某些恶意用户的IP或网段 解决 location /{ Deny xxx
零式的天空
2022/03/21
6240
对极几何概论
数字图像是真实世界中的对象通过光学成像设备在光敏材料上的投影。在3D到2D的转换过程中,深度信息会丢失。从单个或多个图像中恢复有用的3D信息需要使用立体视觉知识进行分析。本文分别介绍了针孔摄像机模型和对极几何的基本知识。
小白学视觉
2020/09/04
5770
【基线加固】Centos7等保二级基线加固(主机安全基线)
编辑/usr/lib/systemd/system/rescue.service 及/usr/lib/systemd/system/emergency.service 设置ExecStart
腾讯云-MSS服务
2020/11/11
3.2K0
Linux基线加固
主机安全的风险级别除了漏洞,另一个重要的参考值是安全基线的风险分值,本次介绍的主要是结合目前公司的业务实际情况制作的一份安全基线脚本,供大家进行参考。
信安之路
2018/08/08
3.2K0
Linux基线加固
自动驾驶汽车的伪激光雷达-双目立体视觉
双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。
点云PCL博主
2022/02/10
1.4K0
自动驾驶汽车的伪激光雷达-双目立体视觉
CVPR 2022 | StyleSDF: 高分辨率三维一致图像和几何生成
StyleGAN 架构展示了高质量 RGB 图像生成,但是它们仅针对生成单个 RGB 视图,而不是 3D 内容。本文提出的 StyleSDF 是一种生成 3D 一致的高分辨率(1024 × 1024) RGB 图像和几何图形的方法。相关的 3D 生成模型通过基于坐标的多层感知器(MLP)实现形状和外观的合成,然而这些工作往往需要 3D 或多视图数据进行监督,这些数据很难收集,并且由于它们依赖于昂贵的体积场采样,现有算法大多仅限于低分辨率的渲染输出。
用户1324186
2023/02/03
1.4K0
Ubuntu安全基线检查
描述 设置密码失效时间,强制定期修改密码,减少密码被泄漏和猜测风险,使用非密码登录方式(如密钥对)请忽略此项。 加固建议 使用非密码登录方式如密钥对,请忽略此项。在 /etc/login.defs中将 PASS_MAX_DAYS 参数设置为 60-180之间,如:
咻一咻
2020/05/29
2.2K0
论文简述 | 无需校正和不失真的实时变化的鱼眼双目
广角摄像头拍摄的稠密3D地图有利于导航和自动驾驶等机器人应用.在这项工作中,我们提出了一种实时稠密三维鱼眼相机建图方法,无需显式校正和不失真.我们扩展了传统的变分立体方法,通过使用由摄像机运动引起的轨迹场来约束沿外极曲线的对应搜索.与传统的校正方法相比,我们还提出了一种在不增加处理时间的情况下生成轨迹场的快速方法.通过我们的实现,我们能够使用现代图形处理器实现实时处理.我们的结果显示了我们的非校正稠密建图方法相对于校正变分方法和非校正离散立体匹配方法的优势.
3D视觉工坊
2020/11/19
1.1K0
论文简述 | 无需校正和不失真的实时变化的鱼眼双目
立体的表达方式
今天初六了,从回成都到今天已经五天了。在家忙着,时间过得太快了,完全感受不到在家赋闲。本来明天应该正式开始上班了,还好假期延长了,还有两天时间可以争取多做点有意义的事,弥补前面十几天无所作为的愧疚感。
efonfighting
2020/02/21
8080
立体的表达方式
双目视觉测距系统软硬件设计
随着计算机技术和光电技术的发展,机器视觉技术应运而生。在图像处理技术领域中,有一种采用 CCD摄像机作为图像传感器采集数据的非接触式测量方法,这种方法具有精度高、速度快、成本低等诸多优点,在三维测量方面具有广泛的应用前景。双目测距技术运用两个摄像头对同一场景进行拍摄,从而产生图像视差,然后通过该视差建立物体距离测量模型,从而实现景物距离的实时计算。
苏州程序大白
2021/08/13
1.7K0
双目视觉测距系统软硬件设计
linux主机安全基线检查脚本怎么做?安全基线的检查内容
对于电脑系统来说安全是第一大问题,所以每一个电脑系统或者主机系统都会配置许多的防护软件以及安全软件。定期的来检查电脑的安全系统,以及一些其他的系统安全问题,可以有效的预防电脑漏洞的出现以及安全隐患的出现。现在来了解一下linux主机安全基线检查脚本怎么做?
用户8715145
2021/12/29
2.5K0
安全基线检查平台
最近在做安全基线检查相关的,网上有一些代码比较零散;也有一些比较完整的项目,比如owasp中的安全基线检查项目,但是收费;还有一些开源且完整的,比如lynis,但是不符合我的要求。
FB客服
2020/02/20
3.8K0
安全基线检查平台
立体视觉+惯导+激光雷达SLAM系统
标题:Stereo Visual Inertial LiDAR Simultaneous Localization and Mapping
点云PCL博主
2021/01/05
8960

相似问题

Postgres容器没有启动

12

似乎无法在Docker容器中启动MySQL

19

创建但未启动的Chaincode容器

15

模板化函数似乎创建了临时容器

12

启动bluemix容器时没有日志记录

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档