DL4J中文文档/模型/顶点

顶点是什么?

在Eclipse DL4J中,顶点是在计算图中充当节点的一种层。它可以接受多个输入,提供多个输出,并且可以帮助构建流行的网络,如InceptionV4。

可用的类


L2NormalizeVertex

[源码]

L2NormalizeVertex 在单个输入上执行L2归一化。


L2Vertex

[源码]

L2Vertex 计算两个输入的L2最小二乘误差。

例如,在三重嵌入中,你可以输入一个锚和一个pos/neg类,并使用两个并行的L2顶点来计算两个实数,这两个实数可以输入LossLayer来计算三重损失。


PoolHelperVertex

[源码]

用于从输入中移除第一列和行的自定义层。这意味着允许从https://gist.github.com/joelouismarino/a2ede9ab3928f999575423b9887abd14 引入Caffe的GoogLeNet。


ReshapeVertex

[源码]

在计算图中增加对张量变形和偏平化能力。这相当于下一层。ReshapeVertex还确保形状对于反向传播是有效的。


ScaleVertex

[源码]

一个ScaleVertex用于缩放单个层的激活大小。

例如,可以在重复块中缩放ResNet激活,以保持方差在控制之中。


ShiftVertex

[源码]

ShiftVertex用于转换单个层的激活

人们可以使用它来添加偏置或者作为其他计算的一部分。例如,公路层在两个地方需要它们。一,门权重有很大的负偏差通常是有用的。(当然,对于这一点,我们可以这样初始化偏置。)但是,它也需要这样做:(1-sigmoid(weight input + bias)) () input + sigmoid(weight input + bias) () activation(w2 input + bias) (() is hadamard product) 因此,在这里,我们可以

  1. 一个做为sigmoid的  DenseLayer
  2. 一个 ScaleVertex(-1) 和
  3. 一个 ShiftVertex(1) 来完成这一点。

StackVertex

[源码]

StackVertex允许堆叠输入,以便它们可以通过网络转发。这对于诸如三重嵌入之类的情况是有用的,其中共享参数不被网络支持。

这个顶点会自动堆叠所有可用的输入。


UnstackVertex

[源码]

UnstackVertex允许对输入进行拆堆叠,以便它们可以通过网络转发。这对于诸如三重嵌入之类的情况是有用的,其中嵌入可以被分离并通过后续层运行。

除了0维度输入之外,与SubsetVertex(子集顶点)相似。stackSize由用户显式定义,以适当地计算一个步骤。


ReverseTimeSeriesVertex

[源码]

在循环神经网络中使用ReverseTimeSeriesVertex来反转时间序列的顺序。结果,最后一个时间步长被移动到时间序列的开始,并且第一时间步长被移动到结束。这允许递归层反向处理时间序列。

掩码:输入可能被屏蔽(以允许在一个小批量中改变不同的时间序列长度)。在这种情况下,当前输入(掩码数组=1)将恢复到位,填充(掩码数组=0)将保持不变。对于长度为n的时间序列,这通常意味着,恢复最初的n个时间步长,并且不修改下面的填充,但是支持更复杂的掩码(例如[1,0,1,0,…])。

setBackpropGradientsViewArray

public void setBackpropGradientsViewArray(INDArray backpropGradientsViewArray) 

从提供的输入获取当前掩码数组。

  • 如果没有输入,则返回掩码或NULL

猜你喜欢

转载自blog.csdn.net/bewithme/article/details/83755274