首页 > 编程知识 正文

现在常用的看报文解析软件,calcite源码解析

时间:2023-05-05 03:04:25 阅读:9153 作者:29

目录

源目录(部分) )。

ND阵列

工作期间

DL4J的图层工作区管理器

沿着维度xfDDS(tad )

反向减法

源目录(部分) DeepLearning4J:包含在单台计算机和分布式计算机上学习神经网络的所有代码。

ND4J: “Java的n维数组”。 ND4J是制造DL4J的数学后端。 所有的DL4J神经网络都是使用ND4J中的运算(矩阵乘法、向量运算等)构建的。 ND4J是DL4J能够在不改变网络本身的情况下进行状况化,即在CPU和GPU两者中训练网络的理由。 没有Nd4J就没有DL4J。

DataVec: DataVec处理管道端数据的导入和转换。 如果您想将图像、视频、音频或简单的CSV数据导入DL4J :您可能希望使用DataVec实现。

Arbiter: Arbiter是一个用于神经网络超参数优化的软件包。 超级参数优化是一个自动选择网络超级参数(学习速度、层数等)以获得良好性能的过程。

NDArray NDArray本质上是n维数组。 也就是说,是具有某个维数的数值矩形数组。

NDArray的rank是维度度数。 正如二维阵列的rank为2,三维阵列的rank为3一样。 可以创建具有任意rank的NDArrays。 NDArray的(shape )形状定义每个维的大小。 假设有3行5列的二维数组。 此NDArray的形状以[ 3,5 ] nd array的长度定义数组中元素的总数。 长度总是等于构成形状的值的乘积。 NDArray的步幅被定义为每个维中相邻元素之间的间距(在基础数据缓冲区中)。 因为步幅是按维定义的,所以一个rank为n的NDArray有n个步幅值,每个维一个。 大多数情况下,不需要理解或在意步幅。 请注意,这是ND4J内部的机制。 下一节有步幅的例子。 NDArray的数据类型是指NDArray的数据类型。 例如,浮动和双精度。 因为nd4j是全局设置,所以所有NDArrays都必须具有相同的数据类型。 本文档后面将介绍数据类型的设置。 关于索引,这里有件事你应该知道。 首先,因为维0是行,维1是列:所以indarray.size(0)是行数,indarray.size(0)是列数,索引从0开始。 因此,行中有从0到indarray.size )0)-1的索引,而对于其他维

物理上,INDArray背后的数据存储在堆外。 也就是说,它存储在Java虚拟机(JVM )之外。 它具有许多优点,包括性能、与高性能BLAS库的互操作性,以及避免了JVM在高性能计算方面的缺点。 例如,由于整数索引,Java数组限于2^31-1(21亿)个元素。

对于编码,可以按照c (行主)或Fortran (列主)的顺序对NDArray进行编码。 有关行和列的主要顺序的详细信息,请参见维基。 ND4J可以同时使用c和f顺序数组的组合。 请注意,大多数用户只能使用默认数组排序,但如果需要,可以对特定数组使用特定排序。

工作区ND4J提供了一种称为工作区的附加内存管理模型。 这样,可以回收循环工作负载的内存,而无需使用用于堆外内存跟踪的JVM垃圾收集器。 也就是说,工作循环结束后,所有数组内存的内容都将被禁用。 工作期间整合到DL4J中进行训练和推理。

基本的想法很简单。 可以在工作区(或空间)中执行所需的操作。 另外,如果要删除INDArray ) (即从工作区中移动结果),只需调用INDArray.detach ),即可获得独立的INDArray副本。

DL4J的图层工作区管理器DL4J的图层API包含“图层工作区管理器”概念。

这个类的思想是能够以给定工作之间不同的可能安排来简单准确地控制给定数组的位置。 例如,层外激活可以位于推理中的工作区,也可以位于训练中的另一个工作区。 这是因为性能上的原因。 但是,如果使用跨层管理器进行设计,层实现者就不必为此而烦恼。

这在实践中意味着什么? 通常很简单…

“后退”侧

法),确保返回的数组已在 ArrayType.ACTIVATIONS (i.e., 使用 LayerWorkspaceMgr.create(ArrayType.ACTIVATIONS, …) 或类似)中定义 当返回激活梯度 (backpropGradient(INDArray epsilon, LayerWorkspaceMgr workspaceMgr)),类似的返回一个在 ArrayType.ACTIVATION_GRAD 中定义的数组。

你还可以在适合的工作间使用一个在任何工作间定义的数组,例如:LayerWorkspaceMgr.leverageTo(ArrayType.ACTIVATIONS, myArray)

注意,如果你没有实现自定义层(而是只想对MultiLayerNetwork/ComputationGraph之外的层执行转发),那么可以使用LayerWorkspaceMgr.noWorkspaces()。

沿维xfdds(TAD)

沿维xfdds背后的思想是得到一个低阶子数组,它是原始数组的视图。

“沿维xfdds”方法采用两个参数:

要返回的xfdds的索引(在0到numTensors-1的范围内)执行TAD操作的维度(1个或多个值)

The simplest case is a tensor along a single row or column of a 2d array. Consider the following diagram (where dimension 0 (rows) are indexed going down the page, and dimension 1 (columns) are indexed going across the page):

最简单的情况是沿二维数组的单个行或列的xfdds。考虑下面的关系图(其中维度0(行)在页面下方被索引,维度1(列)在页面上方被索引):

反向减法

反向减法 (scalar - arr1): arr1.rsub(myDouble)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。