nip.graph_isomorphism.environment.AdjacencyMatrixSpec#

class nip.graph_isomorphism.environment.AdjacencyMatrixSpec(max_num_nodes: int, shape: Size | None = None, device: device | str | int | None = None, dtype: str | dtype = torch.int32)[source]#

A specification of the space of adjacency matrices.

This represents a space of adjacency matrices with a fixed number of nodes, for use in an RL environment.

Parameters:
  • max_num_nodes (int) – The maximum number of nodes in the graph.

  • shape (torch.Size, optional) – The shape of the adjacency matrix. If None, the shape will be (max_num_nodes, max_num_nodes).

  • device (torch.device, optional) – The device on which the adjacency matrix spec should be stored.

  • dtype (torch.dtype, optional) – The dtype of the adjacency matrix spec.

Methods Summary

__init__(max_num_nodes[, shape, device, dtype])

_project(val)

Project a value to the space of valid adjacency matrices.

clone()

Create a copy of the adjacency matrix spec.

is_in(val)

Check if a value is a valid adjacency matrix.

rand([shape])

Generate a random 1/2 Erdos-Renyi adjacency matrix.

to(dest)

Move the adjacency matrix spec to a new device or dtype.

Attributes

SPEC_HANDLED_FUNCTIONS

_safe_shape

Returns a shape where all heterogeneous values are replaced by one (to be expandable).

device

The device of the spec.

domain

dtype

ndim

Number of dimensions of the spec shape.

shape

space

Methods

__init__(max_num_nodes: int, shape: Size | None = None, device: device | str | int | None = None, dtype: str | dtype = torch.int32)[source]#
_project(val: Tensor) Tensor[source]#

Project a value to the space of valid adjacency matrices.

Symmetrizes the matrix, sets the diagonal to zero and rounds the values to 0 or 1.

Parameters:

val (torch.Tensor) – The value to project.

Returns:

projected_val (torch.Tensor) – The projected value.

clone() AdjacencyMatrixSpec[source]#

Create a copy of the adjacency matrix spec.

is_in(val: Tensor) bool[source]#

Check if a value is a valid adjacency matrix.

Parameters:

val (torch.Tensor) – The value to check.

Returns:

is_in (bool) – Whether the value is a valid adjacency matrix.

rand(shape: list[int] | Size | None = None) Tensor[source]#

Generate a random 1/2 Erdos-Renyi adjacency matrix.

Parameters:

shape (list[int] | torch.Size, optional) – The batch shape of the adjacency matrix. If None, the batch shape will be ().

Returns:

adjacency (torch.Tensor) – A random adjacency matrix.

to(dest: dtype | device | str | int) TensorSpec[source]#

Move the adjacency matrix spec to a new device or dtype.

Parameters:

dest (torch.dtype | torch.device | str | int) – The destination device or dtype.

Returns:

adjacency_matrix_spec (AdjacencyMatrixSpec) – The adjacency matrix spec on the new device or dtype.