get_partial_kipf_propagate_left Function

function get_partial_kipf_propagate_left(this, upstream_grad) result(output)

Gradient of kipf_propagate with respect to vertex features.

Arguments

Type IntentOptional Attributes Name
class(array_type), intent(inout) :: this

Forward result node containing saved operands

type(array_type), intent(in) :: upstream_grad

Upstream gradient tensor

Return Value type(array_type)

Gradient tensor for left operand


Source Code

  function get_partial_kipf_propagate_left(this, upstream_grad) result(output)
    !! Gradient of kipf_propagate with respect to vertex features.
    implicit none

    ! Arguments
    class(array_type), intent(inout) :: this
    !! Forward result node containing saved operands
    type(array_type), intent(in) :: upstream_grad
    !! Upstream gradient tensor
    type(array_type) :: output
    !! Gradient tensor for left operand

    output = reverse_kipf_propagate( upstream_grad, &
         this%indices, this%adj_ja, &
         num_features = [ &
              this%left_operand%shape(1), this%right_operand%shape(1) &
         ], &
         num_elements = [ &
              size(this%left_operand%val,2), size(this%right_operand%val,2) &
         ] &
    )

  end function get_partial_kipf_propagate_left