Class BaseGraphVertex

    • Field Detail

      • vertexName

        protected String vertexName
      • vertexIndex

        protected int vertexIndex
        The index of this vertex
      • inputVertices

        protected VertexIndices[] inputVertices
        A representation of the vertices that are inputs to this vertex (inputs during forward pass) Specifically, if inputVertices[X].getVertexIndex() = Y, and inputVertices[X].getVertexEdgeNumber() = Z then the Zth output of vertex Y is the Xth input to this vertex
      • outputVertices

        protected VertexIndices[] outputVertices
        A representation of the vertices that this vertex is connected to (outputs duing forward pass) Specifically, if outputVertices[X].getVertexIndex() = Y, and outputVertices[X].getVertexEdgeNumber() = Z then the output of this vertex (there is only one output) is connected to the Zth input of vertex Y
      • outputVertex

        protected boolean outputVertex
    • Method Detail

      • getVertexIndex

        public int getVertexIndex()
        Description copied from interface: GraphVertex
        Get the index of the GraphVertex
        Specified by:
        getVertexIndex in interface GraphVertex
      • getNumInputArrays

        public int getNumInputArrays()
        Description copied from interface: GraphVertex
        Get the number of input arrays. For example, a Layer may have only one input array, but in general a GraphVertex may have an arbtrary (>=1) number of input arrays (for example, from multiple other layers)
        Specified by:
        getNumInputArrays in interface GraphVertex
      • getNumOutputConnections

        public int getNumOutputConnections()
        Description copied from interface: GraphVertex
        Get the number of outgoing connections from this GraphVertex. A GraphVertex may only have a single output (for example, the activations out of a layer), but this output may be used as the input to an arbitrary number of other GraphVertex instances. This method returns the number of GraphVertex instances the output of this GraphVertex is input for.
        Specified by:
        getNumOutputConnections in interface GraphVertex
      • getInputVertices

        public VertexIndices[] getInputVertices()
        A representation of the vertices that are inputs to this vertex (inputs duing forward pass)
        Specifically, if inputVertices[X].getVertexIndex() = Y, and inputVertices[X].getVertexEdgeNumber() = Z then the Zth output of vertex Y is the Xth input to this vertex
        Specified by:
        getInputVertices in interface GraphVertex
      • getOutputVertices

        public VertexIndices[] getOutputVertices()
        A representation of the vertices that this vertex is connected to (outputs duing forward pass) Specifically, if outputVertices[X].getVertexIndex() = Y, and outputVertices[X].getVertexEdgeNumber() = Z then the Xth output of this vertex is connected to the Zth input of vertex Y
        Specified by:
        getOutputVertices in interface GraphVertex
      • isInputVertex

        public boolean isInputVertex()
        Description copied from interface: GraphVertex
        Whether the GraphVertex is an input vertex
        Specified by:
        isInputVertex in interface GraphVertex
      • setEpsilon

        public void setEpsilon​(INDArray epsilon)
        Description copied from interface: GraphVertex
        Set the errors (epsilon - aka dL/dActivation) for this GraphVertex
        Specified by:
        setEpsilon in interface GraphVertex
      • clear

        public void clear()
        Description copied from interface: GraphVertex
        Clear the internal state (if any) of the GraphVertex. For example, any stored inputs/errors
        Specified by:
        clear in interface GraphVertex
      • canDoForward

        public boolean canDoForward()
        Description copied from interface: GraphVertex
        Whether the GraphVertex can do forward pass. Typically, this is just whether all inputs are set.
        Specified by:
        canDoForward in interface GraphVertex
      • canDoBackward

        public boolean canDoBackward()
        Description copied from interface: GraphVertex
        Whether the GraphVertex can do backward pass. Typically, this is just whether all errors/epsilons are set
        Specified by:
        canDoBackward in interface GraphVertex
      • getEpsilon

        public INDArray getEpsilon()
        Description copied from interface: GraphVertex
        Get the epsilon/error (i.e., dL/dOutput) array previously set for this GraphVertex
        Specified by:
        getEpsilon in interface GraphVertex
      • setLayerAsFrozen

        public void setLayerAsFrozen()
        Description copied from interface: GraphVertex
        Only applies to layer vertices. Will throw exceptions on others. If applied to a layer vertex it will treat the parameters of the layer within it as constant. Activations through these will be calculated as they would as test time regardless of training mode
        Specified by:
        setLayerAsFrozen in interface GraphVertex
      • clearVertex

        public void clearVertex()
        Description copied from interface: GraphVertex
        This method clears inpjut for this vertex
        Specified by:
        clearVertex in interface GraphVertex
      • paramTable

        public Map<String,​INDArray> paramTable​(boolean backpropOnly)
        Description copied from interface: GraphVertex
        Get the parameter table for the vertex
        Specified by:
        paramTable in interface GraphVertex
        Specified by:
        paramTable in interface Trainable
        Parameters:
        backpropOnly - If true: exclude unsupervised training parameters
        Returns:
        Parameter table
      • numParams

        public long numParams()
        Specified by:
        numParams in interface Trainable
        Returns:
        Number of parameters
      • updaterDivideByMinibatch

        public boolean updaterDivideByMinibatch​(String paramName)
        Description copied from interface: Trainable
        DL4J layers typically produce the sum of the gradients during the backward pass for each layer, and if required (if minibatch=true) then divide by the minibatch size.
        However, there are some exceptions, such as the batch norm mean/variance estimate parameters: these "gradients" are actually not gradients, but are updates to be applied directly to the parameter vector. Put another way, most gradients should be divided by the minibatch to get the average; some "gradients" are actually final updates already, and should not be divided by the minibatch size.
        Specified by:
        updaterDivideByMinibatch in interface Trainable
        Parameters:
        paramName - Name of the parameter
        Returns:
        True if gradients should be divided by minibatch (most params); false otherwise (edge cases like batch norm mean/variance estimates)