Module for extended differential structure types for Athena
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | input | ||
| class(array_type), | intent(in), | target | :: | bias | ||
| integer, | intent(in) | :: | dim | |||
| logical, | intent(in), | optional | :: | dim_act_on_shape |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_ptr_type), | intent(in), | dimension(:) | :: | a | ||
| integer, | intent(in) | :: | idx1 | |||
| integer, | intent(in) | :: | idx2 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | input | ||
| class(array_type), | intent(in), | target | :: | params | ||
| real(kind=real32), | intent(in) | :: | momentum | |||
| real(kind=real32), | intent(in), | dimension(:) | :: | mean | ||
| real(kind=real32), | intent(in), | dimension(:) | :: | variance | ||
| real(kind=real32), | intent(in) | :: | epsilon |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | input | ||
| class(array_type), | intent(in), | target | :: | params | ||
| real(kind=real32), | intent(in), | dimension(:) | :: | mean | ||
| real(kind=real32), | intent(in), | dimension(:) | :: | variance | ||
| real(kind=real32), | intent(in) | :: | epsilon |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_ptr_type), | intent(in), | dimension(:) | :: | a | ||
| integer, | intent(in) | :: | idx1 | |||
| integer, | intent(in) | :: | idx2 | |||
| integer, | intent(in) | :: | dim |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_type), | intent(in), | target | :: | input | ||
| type(array_type), | intent(in), | target | :: | kernel | ||
| integer, | intent(in) | :: | stride | |||
| integer, | intent(in) | :: | dilation |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_type), | intent(in), | target | :: | input | ||
| type(array_type), | intent(in), | target | :: | kernel | ||
| integer, | intent(in), | dimension(2) | :: | stride | ||
| integer, | intent(in), | dimension(2) | :: | dilation |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_type), | intent(in), | target | :: | input | ||
| type(array_type), | intent(in), | target | :: | kernel | ||
| integer, | intent(in), | dimension(3) | :: | stride | ||
| integer, | intent(in), | dimension(3) | :: | dilation |
Duvenaud message passing function
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | vertex_features | ||
| class(array_type), | intent(in), | target | :: | edge_features | ||
| integer, | intent(in), | dimension(:) | :: | adj_ia | ||
| integer, | intent(in), | dimension(:,:) | :: | adj_ja |
Duvenaud update function
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | a | ||
| class(array_type), | intent(in), | target | :: | weight | ||
| integer, | intent(in), | dimension(:) | :: | adj_ia | ||
| integer, | intent(in) | :: | min_degree | |||
| integer, | intent(in) | :: | max_degree |
Element-wise multiply: out[i,s] = input[i,s] * scale[i,1] Correctly handles non-sample-dependent scale vectors.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | input | ||
| class(array_type), | intent(in), | target | :: | scale |
Aggregate neighbour messages using per-edge kernels
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | features | ||
| class(array_type), | intent(in), | target | :: | edge_kernels | ||
| integer, | intent(in), | dimension(:) | :: | adj_ia | ||
| integer, | intent(in), | dimension(:,:) | :: | adj_ja | ||
| integer, | intent(in) | :: | F_in | |||
| integer, | intent(in) | :: | F_out |
Evaluate GNO kernel MLP on every edge
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | coords | ||
| class(array_type), | intent(in), | target | :: | kernel_params | ||
| integer, | intent(in), | dimension(:) | :: | adj_ia | ||
| integer, | intent(in), | dimension(:,:) | :: | adj_ja | ||
| integer, | intent(in) | :: | coord_dim | |||
| integer, | intent(in) | :: | kernel_hidden | |||
| integer, | intent(in) | :: | F_in | |||
| integer, | intent(in) | :: | F_out |
Propagate values from one autodiff array to another
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | vertex_features | ||
| integer, | intent(in), | dimension(:) | :: | adj_ia | ||
| integer, | intent(in), | dimension(:,:) | :: | adj_ja |
Update the message passing layer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | a | ||
| class(array_type), | intent(in), | target | :: | weight | ||
| integer, | intent(in), | dimension(:) | :: | adj_ia |
Decode via Laplace basis: D(mu) @ spectral
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | spectral | ||
| class(array_type), | intent(in), | target | :: | poles | ||
| integer, | intent(in) | :: | num_outputs | |||
| integer, | intent(in) | :: | num_modes |
Encode input via Laplace basis: E(mu) @ u
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | input | ||
| class(array_type), | intent(in), | target | :: | poles | ||
| integer, | intent(in) | :: | num_inputs | |||
| integer, | intent(in) | :: | num_modes |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | tsource | ||
| real(kind=real32), | intent(in) | :: | fsource | |||
| logical, | intent(in), | dimension(:,:) | :: | mask |
Decode via orthogonal basis: Q(B) @ mixed
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | mixed | ||
| class(array_type), | intent(in), | target | :: | basis_weights | ||
| integer, | intent(in) | :: | num_inputs | |||
| integer, | intent(in) | :: | num_basis |
Encode via orthogonal basis: Q(B)^T @ u
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(array_type), | intent(in), | target | :: | input | ||
| class(array_type), | intent(in), | target | :: | basis_weights | ||
| integer, | intent(in) | :: | num_inputs | |||
| integer, | intent(in) | :: | num_basis |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_type), | intent(in), | target | :: | input | ||
| type(facets_type), | intent(in) | :: | facets | |||
| integer, | intent(in) | :: | pad_size | |||
| integer, | intent(in) | :: | imethod |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_type), | intent(in), | target | :: | input | ||
| type(facets_type), | intent(in), | dimension(2) | :: | facets | ||
| integer, | intent(in), | dimension(2) | :: | pad_size | ||
| integer, | intent(in) | :: | imethod |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(array_type), | intent(in), | target | :: | input | ||
| type(facets_type), | intent(in), | dimension(3) | :: | facets | ||
| integer, | intent(in), | dimension(3) | :: | pad_size | ||
| integer, | intent(in) | :: | imethod |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(array_type), | public, | pointer | :: | array(:,:) |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real32), | public | :: | epsilon | ||||
| real(kind=real32), | public, | dimension(:), allocatable | :: | mean | |||
| real(kind=real32), | public, | dimension(:), allocatable | :: | variance |