没有合适的资源?快使用搜索试试~ 我知道了~
≥软件X 11(2020)100361原始软件出版物PyLops-用于可扩展代数和优化的线性运算符Python库Matteo Ravasia,a,Ivan VasconcelosbaEquinor ASA - Sandslivegen 90,Sandsli,5254,Norwayb乌得勒支大学,Vening Meineszgebouw A,Uetonlaan 8a,Room 242,3584 CB,乌得勒支,荷兰ar t i cl e i nf o文章历史记录:接收4四月2019收到修订版2019年11月13日接受2019年11月19日保留字:Python线性代数反问题优化线性算子a b st ra ct线性算子和优化是信号和图像处理、遥感和逆问题中许多算法的核心。对于中小规模的问题,现有的软件包(例如,MATLAB,Python NumPy和SciPy)允许显式构建密集或稀疏矩阵,并使用近似表示其等效数学符号的语法执行代数运算。然而,许多实际应用中,大规模的运营商不适合显式矩阵表示,通常迫使从业者放弃方便的线性代数语法可用于显式矩阵对应。PyLops是一个开源Python库,提供了一个灵活的框架,用于创建和组合所谓的线性运算符,基于类的实体,表示矩阵并继承其相关的语法便利性,但不依赖于显式矩阵的创建。我们表明,与显式矩阵计算相比,PyLops运算符可以显着减少内存负载和CPU计算,同时仍然允许用户无缝地使用他们现有的基于紧凑矩阵的语法知识,这些语法可以扩展到任何问题大小,因为不需要显式矩阵。©2019作者由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v1.7.0永久链接到代码/存储库使用的此代码版本https://github.com/ElsevierSoftwareX/SOFTX_2019_106法律代码许可证LGPL-3.0使用git的代码版本控制系统使用的软件代码语言、工具和服务Python; CI travis; Azure Pipelines; readthedocs; codacy; Docker编译要求,操作环境&依赖Python3. 5; Linux、OSX、Windows; requirement.txt中提供的要求或存储库中的environment.yml文件如果可用,链接到开发人员文档/手册pylops.readthedocs.io问题支持电子邮件matteoravasi@gmail.com1. 介绍数值线性代数是信号处理[1],图像处理[2],逆问题[3,4]中许多问题的核心,并应用于遥感[5],物理学[6],医学成像[7],甚至机器学习的某些领域,如深度神经网络[8]。在这些学科中通常使用的是线性算子的概念,将向量从一个空间(通常称为模型空间)映射到另一个空间(称为数据空间或模型空间)。*通讯作者。电子邮件地址:matteoravasi@gmail.com(M. Ravasi)。https://doi.org/10.1016/j.softx.2019.100361观察空间相反,逆问题是从一组观察结果估计产生它们的因果因素的过程,即基础模型(例如,[3])。可以确定三种替代方法来解决反问题:直接求解显式(稠密或稀疏)矩阵,迭代求解显式矩阵,迭代求解线性算子。对于有限大小的问题,可以首先创建一个矩阵,然后利用其功能的直接求解器因式分解方程组或使用解析伪逆公式来求逆这样的矩阵。在后一种情况下,将逆矩阵乘以观测向量以获得模型的估计。然而,这条路线并不总是可行的,迭代求解器,如梯度下降2352-7110/©2019作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx2M. 拉瓦希和我。 Vasconcelos / SoftwareX 11(2020)100361−−X[−]ˆ通常采用的方法这些求解器的一个明显优势是,不需要直接访问矩阵,而只需要能够计算向前和有时伴随的操作。如今,有几个软件包提供了处理数组和矩阵的核心功能,直接和迭代数值求解器:例如MATLAB,Python科学库NumPy和SciPy,以及更低级的库BLAS和LAPACK。此外,一些开源项目提供了高层次的,易于使用的例程,用于不适定问题的数值处理,例如正则化工具包[9]。尽可能高效和快速地执行核心线性代数运算的广泛需求也导致在过去二十年中进行了大量计算技术投资,重点是使用多线程以及多核范式、GPU和最近的TPU在CPU上寻求高效实现 [10]。例如,机器学习领域已经从这些进步中受益匪浅;对于深度学习来说尤其如此,其中具有数百万权重的高度复杂的深度神经网络(即,模型参数)的计算现在可以在几个小时内解决,主要是因为与CPU相比,GPU和TPU提供的矩阵-矩阵和矩阵-向量计算的加速Theano [11],TensorFlow [12]或PyTorch[13]等框架已经开发出来,专门满足这种需求并利用硬件组件的进步。然而,在处理各种各样的物理学时-基于逆问题,基本的线性算子远非稠密矩阵(例如,与神经网络中的稠密层相反)。相反,它们可以通过稀疏的结构化矩阵来表示,与零元素相比,非零元素更少。通过利用这个属性,我们可以编写线性运算器的计算机代码,从而更有效地应用随问题大小而扩展的前向和伴随运算。这种计算机代码可以以继承分析线性代数的语法便利的方式编写,通过类定义的方法简单地表示正向和伴随运算,这些方法再现了显式矩阵向量乘积的结果。这种构造不仅服务于稀疏(例如,基于物理的)和稠密算子(例如,卷积与格林方便地,Python库SciPy提供了一个用于定义和应用线性运算符的准系统、通用类,我们在PyLops包中利用和构建它,如下所述。目前可用的软件包的其他例子,提供了一个通用接口的线性运算符是C++水稻矢量库[14],MATLAB的斑点和波形包[15,16],Pythonfastmat库[17],以及JuliaLinearMaps.jl和JOLI.jl软件包[18,19]。此外,一些采用解决特定领域逆问题的类似构造是ASTRA工具箱[20]、Seplib[6,21]、Madagascar[22]和Devito[23]。然而,上面提到的许多软件包倾向于优先考虑有效地解决大型逆问题的能力,以换取方便的线性代数语法的损失据我们所知,只有MATLABSpot包,以及在较小程度上的Python fastmat库,实现了这两个世界的最佳状态。 PyLops是一个Python库,它实现了同样的目标,同时通过直接构建在SciPy库中的线性运算符定义之上,与Python生态系统更紧密地联系在一起。2. 线性算子简介离散线性算子可以形式上表示为y=Ax(1)其中,AinR(N×M)是将属于实空间RM的模型向量x映射到属于实空间RN的数据向量y的算子。注意,同样的理论也适用于复空间。从一组已知的输入参数的线性映射(x) 转换成数据空间(y)中的向量通常被称为作为建模或前向问题。类似地,我们可以将从数据空间中的向量到模型空间中的向量的映射定义为伴随建模。最后,从数据向量中撤消建模运算符的效果的过程被称为逆建模或逆问题。如前所述,几个线性映射倾向于服从某种结构,当将它们应用于向量时,利用这种结构通常会导致显著的增益在计算速度和存储器效率方面。例如,可以用项表示的运算符就是这种情况模型(数据)向量和紧凑核之间的卷积(相关性)。这种运算符可以通过创建包含内核元素的Toeplitz矩阵,然后与模型或数据向量进行矩阵向量乘法来实现。当核是紧的时,这样的矩阵是非常稀疏的,带矩阵,在主对角线周围具有很少的非零元素,并且在其他地方具有零执行矩阵-向量乘法导致性能差,因为执行了许多具有零元素的乘法和求和。例如,假设我们想要将一阶导数应用于向量x:一阶导数,以其最简单的形式,可以通过应用于输入向量的每对样本的双样本前向差分模板1/1/2/x,1/1 /2/x来近似;对于任何具有通用内核的卷积运算符1. 创建一个稠密矩阵,沿主对角线为1/10x,沿第一个下对角线为1/10x(其他地方为零),然后进行矩阵向量乘法,2. 通过模板对输入信号进行卷积,3. 将 输 入 向 量 的 每 个 样 本 减 去 前 一 个 样 本 , 即 , yi=(xi+1−xi)/x。这最后一种方法是在一阶导数的PyLops实现中采用的方法,因为它不仅消除了存储1/10x和1/10x值的需要,而且还将输出向量的每个样本的运算次数减少到一次求和和一次乘法。更一般地说,PyLops旨在通过利用其特定的结构来提供有效的运算符实现,并减少内存使用和计算成本。使用线性算子的另一个好处是在试图解决逆问题时变得显而易见。不失一般性,我们考虑超定逆问题(n> m)的最小二乘解:x=argmin(J(x)=y−Ax2)→x=(AHA)−1AHy(2)请注意,使成本函数J最小化的解x需要算子A及其伴随算子AH。这不仅是当使用显式解时的情况,而且是当通过基于迭代梯度的求解器来求解问题时的情况。处理显式矩阵还需要创建和存储伴随矩阵,使内存中的数据量对M. 拉瓦希和我。 Vasconcelos / SoftwareX 11(2020)1003613=[]个==∈Fig. 1. 用于创建和应用向量的正向、伴随和反向限制运算符的代码片段。另一方面,通过利用算子本身的结构,线性算子可以以与前向算子类似的方式实现伴随算子,从而导致有限的或者在大多数情况下不需要额外的存储。3. 代码示例在本节中,我们将展示一个教学示例,展示如何使用PyLops库通过使用线性运算符来构建和解决插值问题。更具体地说,我们的目标在规则网格上内插由三个正弦曲线组成的一维信号,所述三个正弦曲线在沿时间轴的不规则和粗略间隔的位置处被采样 这是通过反转所谓的限制算子R来获得的,限制算子R是在位置l处提取N个值的子集的算子l1,l2,l M(在代码中被称为Iava)从正向模式中的输入(或模型)向量xyi=xlii=1,2,...、男(3)在伴随模式中,运算符的作用是将数据向量y中的值放置在模型向量中的位置l处xli=yii=1,2,...、男(4)其中x j0J一,二,. .,N(j1)(即,在输入向量中的所有其它位置)。在下面,我们展示了一个完整的代码片段,并指导读者了解PyLops的一些第4节对软件包及其实现细节进行了更详细的描述。3.1. 示例代码段图1显示了用于解决上述插值问题的代码片段。我们首先在频域中创建由三个正弦波组成的输入信号(第5-图2表明算子R是不适定的,并且简单地使用/operator。 这种方法实际上实现了香草最小二乘反演(等式10)。(1)通过scipy.sparse。linalg.lsqrsolver.4M. 拉瓦希和我。 Vasconcelos / SoftwareX 11(2020)100361=+ − ∗图二、(a)频域X和(b)时域X中的输入信号。采样信号(y-绿点)和反转信号(xiv-红色)也显示在图(b)中。在这个例子中,我们展示了如何通过以下两种方法来改进我们的估计:(i)包括一个正则化项,该正则化项通过惩罚其二阶导数 ( D2x ) 来 支 持 光 滑 模 型 ,经 由的pylops.SecondDerivative操作员或(ii)利用模型的稀疏性,频率域和使用稀疏促进求解器,如pylops.optimization.sparsity.FISTA[24]。如图 3,在这两种情况下,输入信号的估计都得到了很大的改善。最后,虽然这个例子显示了我们的李解决任何类型的反问题的潜力,几个特定领域的例子是使用Sphinx画廊创建的,是有用的。可以作为官方文件的一部分。1此时此刻,PyLops特别用于地球物理成像领域,因为线性算子理想地适合于求解多维卷积积分方程,其在处理大型多通道、基于时间序列的数据集(例如,地震数据)。24. 软件框架PyLops此外,该库适合于解决任何大小的问题,如1 官方文档位于pylops.readthedocs.io。此外,可以在github.com/mrava87/pylops/上找到更深入的代码示例_笔记本。2 示例的等应用可以被发现在https://pylops.readthedocs.io/en/latest/tutorials/mdd.html#sphx-glr-tutorials-mdd-py和https://pylops.readthedocs.io/en/latest/tutorials/marchenko.html#sphx-glr-tutorials-marchenko-py。第5节中的基准测试。为了实现该目标,每个线性运算符是基于类的实体,其可以独立地使用,借助于基本数学运算(例如, 、、;更多细节见下文),或直接输入各种求解器。该库采用模块化方法创建线性运算符,使其他开发人员可以轻松实现新的运算符,并将其无缝地包含在框架中。这最终使得组合 任何新的和现有的运营商,提供了一个简单快捷的方式来实验新的问题。API可以松散地看作是由三个相互连接的单元组成的,如图所示. 四、4.1. 线性算子第一个单元包含整个线性算子集。pylops.LinearOperator是库的主类,它被用作所有其他线性运算符的父类,这样它们就继承了它的各种内部方法,如下所述。 子模块用于创建一个有组织的操作符堆栈,并将几个应用程序中使用的基本操作符与更特定于域的操作符(如信号处理子模块中使用的操作符)分开。pylops.LinearOperator创建一个通用接口,matrix–vector可以用来解决任何正问题或反问题的形式y轴。这是通过重载SciPy类scipy实现的。linalg.LinearOperator,在其上定义了附加属性和方法。前向和伴随矩阵-向量 操作 是 实现 通过 实施 述的方法_matvec表示前向,_rmatvec表示伴随。属性shape(两个整数的元组)和dtype也必须在初始化过程中提供,以标识操作符本身的形状和数据类型此外,pylops。线性算子M. 拉瓦希和我。 Vasconcelos / SoftwareX 11(2020)1003615图三. 使用正则化最小二乘反演(红色)和稀疏促进反演(青色)的转换信号,以及输入信号(黑色)。(For对本图图例中所指颜色的解释,读者可参考本文的网络版图四、软件API的示意图。颜色指示在线性运算符(或求解器)的后端中使用的库需要一个额外的布尔属性explicit,它标识运算符是否具有显式或隐式矩阵表示。这允许在调用truediv方法时使用最合适的求解器的推断,如下所述。由于线性运算符在概念和语法上都等同于矩阵,因此使用户能够组合这些运算符实际上简化为实现以下五个基本运算:求和、乘以标量、乘(或链)运算符、垂直堆叠和水平堆叠。在这种情况下,垂直堆叠相当于创建一个包含多个操作符的列表,将每个操作符应用于模型向量并连接结果数据。另一方面,横向堆叠需要将每个运算符应用于模型的一部分(与运算符列跨度相等的大小),并对得到的数据向量求和。为了能够编写尽可能类似于底层数学方程的代码,我们利用Python的能力来执行各种魔术方法的运算符重载-这些方法是具有dou的Python方法, 在开始和结束时使用下划线数学符号,如+、−、和/,以执行这些操作基本操作。更具体地说,实现了以下运算符重载:6M. 拉瓦希和我。 Vasconcelos / SoftwareX 11(2020)100361==•∗·+•\∥ ∥∥ ∥【×】【×]matmul(通过@调用)或mul(*):适用时对于NumPyndarray向量,分别执行矩阵-矩阵或矩阵-向量乘法的正向计算;mul():当应用于标量时,左-或右-将运算符乘以标量,而当应用于另一个LinearOperator时,将两个运算符链接起来add():当应用于另一个LinearOperator时,对两个运算符求和;H和T:创建转置(或埃尔米特算子),并在与 * 组合时执行伴随计算(即,.H*);truediv():当应用于NumPyndarrayvec时,tor,解决了逆问题y Ax,或迭代求解器。此外,在pylops.LinearOperator类中实现了另外两个方便的方法:eigs:使用ARPACK Fortran包的SciPy包装器估计运算符的奇异值[25]。第二:使用EIGS方法来计算条件数(最大与最小特征值的比率)。4.2. 解决者通过现成的最小二乘成本函数来求解线性问题,如等式(1)中所示(1)可能不总是提供输入模型的良好估计(例如,[3])。在存在噪声数据的情况下,以及对于不能直接反演的不适定线性算子,例如第3节中数值示例中使用的限制算子,情况总是如此。为了获得输入模型的改进估计,正则化项可以包括在成本函数中。 可以添加约束解空间的项(例如众所周知的Tikhonov正则化x2)或稀疏性促进项(例如x 1),或者求解预处理模型p,使得其中P可以是平滑算子)。虽然大量的线性解算器-例如,共轭梯度求解器[26]或LSQR求解器[27]通常留下添加正则化和/或预处理项的任务。PyLops为其中一些求解器提供了薄的包装器,并简化了逆问题中正则化和/或预处理的使用,只需最少的额外代码。我们的整套丰富的求解器是在子模块pylops中提供的。优化和细分为最小二乘内pylops.optimization.leastsquares和稀疏性-促进解决者在pylops。优化。稀疏性。4.3. 应用最后,应用程序层针对希望轻松设置和解决特定问题的最终用户(无需深入了解其实现细节-即,线性算子和求解器的创建和设置)。因此,像上一节中提到的各种地球物理问题被包装到单个高级函数调用中,这需要用户简单地提供输入数据集和一组附加参数。5. 软件依赖性PyLops依赖并构建在两个主要的外部在某些情况下,额外的后端也实施,以提高性能的前向和伴随操作。这是例如FFT运算符的情况,其中快速傅立叶变换(FFT)算法的快速实现由库pyfftw提供,该库是围绕著名的FFTW库的Python包装器[30]。在这种情况下,PyLops提供了两个后端选项(在代码中称为引擎), 一个使用NumPy如果用户在没有安装pyfftw和FTTW的情况下使用engine对于Radon2D运算符也采取了类似的方法,其中numba[31]在这种情况下用于加速循环计算:再次,实现了一个回退NumPy引擎,以保持numba作为可选依赖项。6. 测试和操作员验证在线性算子的框架下,验证前向和伴随运算实现的正确性是至关重要的。不这样做可能会导致次优收敛的迭代求解器时,我们试图反演为他们的建模操作员设置一组观测值。这两个实现的正确性的一个非常强的指示是所谓的点测试[6]。更具体地,随机地生成大小为M1和N1的两个向量u和v,如等式(1)中那样执行前向和伴随操作。(5),以及在一定公差范围内测试的下列等式:(Opu)Hv=uH(OpHv)(5)除了点测试,我们总是为每个线性算子求解一个小规模的逆问题。反转的模型与用于对数据建模的原始模型一致,并且检查两个向量是否在或多或少的严格公差内匹配。重要的是要记住,一些反问题,特别是那些欠定算子(N M<),并不总是有一个唯一的解决方案,一个令人满意的反演模型只能通过包括额外的先验信息的形式额外的正则化。测试已经使用pytest实现,并连接到两个持续集成系统(CI-Travis和Azure Pipelines)。自动化测试涵盖了所有的线性运算符,并且已经实施了多个测试来验证强制和可选输入参数的不同组合。在撰写本文时,PyLops有超过300个自动化测试,代码覆盖率为86%(Codacy提供的估计)。7. 为软件做出我们预见到的贡献,在不同领域的科学计算逆问题是适用的。为了促进贡献,我们创建了一个包含四个强制性步骤的检查表,新操作员需要这些步骤,成为PyLops代码库的一部分。3通过严格遵守这些要求,我们努力保持良好的维护,良好的测试和良好的文档化代码库,同时强烈鼓励外部贡献。8. 标杆最后,我们从计算性能和内存使用的角度分析了示例中使用的三种不同的线性算子对于每个运算符,我们执行基准测试,比较使用PyLops实现将forward运算符应用于输入向量所需的时间,Python中用于科学计算的库,即NumPy[28][ 29]和SciPy[29],对于它的所有线性算子和求解器。3请参阅pylops.readthedocs.io/en/latest/adding.html了解更多详情。····M. 拉瓦希和我。 Vasconcelos / SoftwareX 11(2020)1003617图五. (a)限制算子、(b)一阶导数算子和(c)FFT算子的性能基准。运算符与矩阵的点积的应用产生相同的结果。比较是针对规模不断增 加 的 运 算 符 进 行 的 , 正 演 建 模 执 行 200 次 , 并 通 过Pythontimeit.timeit函数进行记录。比较是在MacBook Air 1.3GHz Intel Core i5与8 GB 1600 MHz DDR3 RAM上进行的。此外,NumPy和SciPy通过conda发行版安装,并链接到用于线性代数的BLAS库这导致CPU架构上的点积的最佳性能,如[32]中所讨论的。对于限制操作符(图5a)我们使用numpy.ndarray创建一个密集矩阵,使用8M. 拉瓦希和我。 Vasconcelos / SoftwareX 11(2020)100361=≤====scipy.sparse.csr_matrix以及PyLops运算符。Py-Lops的实现在稠密矩阵或稀疏矩阵的情况下都优于朴素点积. 此外,如果我们考虑M为105的模型向量,并且子采样因子为10,则所得数据向量的大小为N 10 4。因此,用于执行这种限制的稠密矩阵具有N M10 9个元素。使用8位无符号整数,这相当于8 GB的内存来存储矩阵,其伴随矩阵也是如此。对于稀疏矩阵,存储器使用显著减少,因为需要为输入信号采样的每个索引存储三个N310 4 元素(如果使用int 32type - 4-用于索引和值)。线性运算符只需要存储输入信号采样的索引;在这种情况下,这意味着只需要N104个值(40 kB如果我们使用int32类型的索引)。我们现在考虑两点一阶导数算子(图1)。5b)。该运算符本质上是卷积的,因为它可以通过由紧凑滤波器卷积输入信号来施加Py-Lops实现优于具有密集NumPy矩阵的显式点积,而在这种情况下,当使用稀疏矩阵时,获得类似的性能。虽然对于这个孤立的基准测试是正确的,但我们注意到,在实际应用程序中,多个操作符通常是链接的(或堆叠的)。链接显式矩阵通常会增加结果矩阵的复杂性并使其致密化,这意味着结果矩阵不太稀疏,点积效率较低。情况并非如此对于线性算子,其中链式算子的计算时间等于每个算子的计算时间之和操作符.此外,FirstDerivative运算符的内存使用量减少到单个值,即步长x,而对于密集矩阵,步长x随着模型的大小二次增加。最后,我们对快速傅里叶变换FFT运算符进行基准测试(图11)。5c)。这是一种特殊的情况,因为FFT可以很容易地编写作为全稠密矩阵,并与其他稠密矩阵组合,以及通过矩阵-向量积来应用。然而,使用线性算子,我们可以利用FFT算法的可用开源实现,例如NumPy或FFTW库。在这种情况下,操作员存储也仅限于一个数字,FFT的大小,而所需的存储对于相应的稠密矩阵,再次随模型的大小二次方地增加作为最后的评论,我们希望指出,线性算子不应该总是首选稠密矩阵。从我们的基准测试中可以清楚地看到,对于小规模问题(N102),最高性能的实现是NumPy中高度优化的点积然而,当使用线性算子处理较大规模的问题(N>102)时,内存和计算的好处都会出现,线性算子范式应该是有效解决大规模反问题的首选解决方案。9. 结论我们提出了一个用于线性优化的通用Python库,它可以从教学性的数值实验扩展到大规模的现实问题。使用线性运算符类的概念并利用Python中的运算符重载,创建了一个框架,从而可以以完全可扩展的方式(从数十到数百万的模型参数)解决线性正向和反向问题,而无需在内存中存储大型矩阵。通过设计,PyLops保持了一个紧凑的符号,密切模仿任何选定问题的基本分析基准测试证实,PyLops中的线性运算符可以很好地扩展,相对于通过显式矩阵实现相同运算符的更此外,软件架构是以模块化的方式创建的,以这种方式创建和包含新的线性运算符(或求解器)非常简单。虽然不是该项目当前版本的一部分,但该框架并不限于线性逆问题:PyLops可以用于通过依赖于线性化正演建模的优化方法(例如广泛使用的伴随状态方法)来解决非线性逆问题。类似地,尽管大多数当前应用集中在地球物理处理和成像上,但是该框架是通用的并且适合于处理复杂逆问题或需要复杂线性代数计算的任何其他学科。值得注意的一点是,在其当前形式中,PyLops操作符对象捕获了一些它们的理论对应物的代数性质-即那些与度量空间和操作有关的通常在优化和逆问题中调用。对于那些有兴趣扩展运算符对象,包括其他代数属性,我们的软件框架将很容易允许这样的扩展,从而促进数值分析,支持分析代数的进步。最后,PyLops项目最近增加了两个新功能,即PyLops-GPU和PyLops-distributed,它们在处理线性运算符和求解器时利用了高性能计算(通过分布式计算的GPU和内存不足计算)。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作致谢MR感谢Equinor允许发表这项工作。我们还要感谢Joost vander Neut、Yanadet Sripanich和Tristan van Leeuwen进行了富有洞察力的讨论。使用大字体笔记本创建Figs。2、3和5可以在github.com/mrava87/pylops_notebooks/tree/master/papers/softwareX_2019 上 找到。作者不对任何不当使用本软件库的行为承担责任。引用[1]凯SM。统计信号处理基础:估计。PrenticeHall;1993.[2]冈萨雷斯RC,伍兹RE。数字图像处理。Pearson Education;2017.[3]汉森公司离散逆问题:洞察力和算法(算法的基础)。工业与应用数学学会;2010年。[4]Boccacci P. Berbern M.,《成像中的逆问题介绍》。CRCPress;1998.[5]图米湾介绍遥感和间接测量中的反演数学。Dover Publications; 1997.[6]Claerbout J,Fomel S.地球物理图像估计的例子,阅读,MA。[7]Suetens P.医学成像基础。剑桥大学出版社;2009.[8]放大图片作者:Dr.深度学习出版社:MIT Press Ltd; 2017.[9]汉森公司正则化工具4.0版matlab 7.3。NumerAlgorithms2007;46:189-94.[10]Jouvillo NP,Young C,Patil N,合著者。张量处理单元的数据中心内性能分析。2017年,Arxiv。[11]Al-Rfou R,Alain G,Almahairi A,Angermueller C,et al.,Theano开发团队协作Theano:一个用于快速计算数学表达式的Python框架。2016年,arXiv电子印刷品,abs/1605.02688,URLhttp://arxiv.org/abs/1605.02688。[12]Abadi M,Agarwal A,Barham P,et al. Tensorflow:异构系统上的大规模机 器 学 习 。 2015 年 , URL https://www.tensorflow 。 org/ , 软 件 可 从tensorflow.org获得。M. 拉瓦希和我。 Vasconcelos / SoftwareX 11(2020)1003619[13]Paszke A,Gross S,Chintala S,Chanan G,et al. Automatic differentiationinpytorch.在:NIPS-W中。2017年。[14]D.Padula A,Scott SD,Symes WW.一个无坐标线性代数抽象表示和优化算法 的 软 件 框 架 。 ACM Trans Math Software 2009;36 ( 2 ) : 8 : 1-36.http://dx.doi.org/10.1145/1499096.1499097,URLhttp://doi.acm.org/10.1145/1499096.1499097。[15]van den Berg E , Friedlander MP. SPOT - 线 性 算 子 工 具 箱 。 2013 年 ,URLhttp://www.cs.ubc.ca/labs/scl/spot/。[16]Silva CD,Herrmann FJ.非线性反问题的统一二维/三维大规模软件环境。ACM Trans Math Software 2019.[17]Wagner C,Semper S. Python中的快速线性变换Math Softw2017.[18]Karrasch D,贡献者。jl 2019年,https://github.com/Jutho/LinearMaps.jl。[19]Modzelewski H,Louboutin M. Joli. jl-julia2019年,https://github.com/slimgroup/JOLI.jl网站。[20]van Aarle W , Palenstijn WJ , Beenhouwer JD , Altantzis T , Bals S ,Batenburg KJ,Sijbers J. ASTRA工具箱:电子断层扫描高级算法开发平台。Ultramicroscopy2015;157:35-47.[21] 克拉普河分离在:第74届EAGE会议和展览-研讨会。2012年。[22]Fomel S,Sava P,Ioan Vlad YL,Bashkardin V. Madagascar:用于多维数据分析和可重复计算实验的开源软件项目。J Open Res Softw 2013;1(1).e8.[23]Louboutin M,Lange M,Luporini F,Kukreja N,Witte PA,HerrmannFJ,Velesko P,Gorman GJ. Devito(v3.1.0):一种用于有限差分和地球物理 勘 探 的 嵌 入 式 领 域 特 定 语 言 。 Geosci Model Dev 2019;12 :1165https://doi.org/10.5194/gmd-12-1165-2019[24]Beck A , Teboulle M. 线 性 反 问 题 的 收 缩 阈 值 算 法 。 SIAM J Imaging Sci2009;183[25]放大图片作者:Lehoucq RB,Sorensen DC,Yang C. Arpack用户指南用隐式重新启动arnoldi方法求解大规模特征值问题。1998年,社会学 工业应用数学。[26]Hestenes MR,Stiefel E.解线性方程组的共轭梯度法。49.第49章.[27]Paige CC,Saunders MA. LSQR:稀疏线性方程和稀疏最小二乘算法。8.第八章[28]奥列芬特Numpy:A Guide to Numpy.美国:Trelgol Publishing; 2006年,URLhttp://www.numpy.org/。[29]埃里克·琼斯PP,特拉维斯·奥列芬特。Scipy:Python的开源科学工具。2001年[30]Frigo M,Johnson SG. FFTW:一种用于FFT的自适应软件体系结构。在:IEEE国际会议上声学,语音和信号处理,卷。3.第三章。1998年,p.1381-4.[31]放大图片作者:Lam SK,Pitrou A,Seibert S. Numba:一个基于llvm的python jit编译器。在:第二次研讨会的会议记录在HPC的LLVM集群基础设施 。 LLVM '15 , 纽 约 州 纽 约 市 , 美 国 : ACM; 2015 年 , 第 7 : 1- 6 页 。http://dx.doi.org/10.1145/2833157.2833162 , URLhttp://doi.acm.org/10 。1145/2833157.2833162。[32]包 克 湾 用 MKL 提 升 NumPy 。 2016 年 , 网 址 https : //www.numbercrunch.de/blog/2016/03/boosting-numpy-with-mkl/网站。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功