megnet.layers.graph.cgcnn module

CGCNN layer

class CrystalGraphLayer(*args, **kwargs)[source]

Bases: megnet.layers.graph.base.GraphNetworkLayer

The CGCNN graph implementation as described in the paper

Xie et al. PHYSICAL REVIEW LETTERS 120, 145301 (2018)

call(inputs, mask=None)

the logic of the layer, returns the final graph

compute_output_shape(input_shape)[source]

compute static output shapes, returns list of tuple shapes

build(input_shape)[source]

initialize the weights and biases for each function

phi_e(inputs)[source]

update function for bonds and returns updated bond attribute e_p

rho_e_v(e_p, inputs)[source]

aggregate updated bonds e_p to per atom attributes, b_e_p

phi_v(b_e_p, inputs)[source]

update the atom attributes by the results from previous step b_e_p and all the inputs returns v_p.

rho_e_u(e_p, inputs)[source]

aggregate bonds to global attribute

rho_v_u(v_p, inputs)[source]

aggregate atom to global attributes

get_config()[source]

part of keras interface for serialization

Parameters
  • activation (str) – Default: None. The activation function used for each sub-neural network. Examples include ‘relu’, ‘softmax’, ‘tanh’, ‘sigmoid’ and etc.

  • use_bias (bool) – Default: True. Whether to use the bias term in the neural network.

  • kernel_initializer (str) – Default: ‘glorot_uniform’. Initialization function for the layer kernel weights,

  • bias_initializer (str) – Default: ‘zeros’

  • activity_regularizer (str) – Default: None. The regularization function for the output

  • kernel_constraint (str) – Default: None. Keras constraint for kernel values

  • bias_constraint (str) – Default: None .Keras constraint for bias values

  • kwargs (dictionary) – additional keyword args

build(input_shapes)[source]

Build the weights for the layer :param input_shapes: the shapes of all input tensors :type input_shapes: sequence of tuple

compute_output_shape(input_shape)[source]

Compute output shapes from input shapes :param input_shape: input shapes :type input_shape: sequence of tuple

Returns: sequence of tuples output shapes

get_config()[source]

Part of keras layer interface, where the signature is converted into a dict

Returns

configurational dictionary

phi_e(inputs)[source]

Edge update function :param inputs: :type inputs: tuple of tensor

Returns

output tensor

phi_u(b_e_p, b_v_p, inputs)[source]
Parameters
  • b_e_p (tf.Tensor) – edge/bond to global aggregated tensor

  • b_v_p (tf.Tensor) – node/atom to global aggregated tensor

  • inputs (Sequence) – list or tuple for the graph inputs

Returns

updated globa/state attributes

phi_v(b_ei_p, inputs)[source]

Node update function :param b_ei_p: edge aggregated tensor :type b_ei_p: tensor :param inputs: other graph inputs :type inputs: tuple of tensors

Returns: updated node tensor

rho_e_u(e_p, inputs)[source]

aggregate edge to state :param e_p: edge tensor :type e_p: tensor :param inputs: other graph input tensors :type inputs: tuple of tensors

Returns: edge aggregated tensor for states

rho_e_v(e_p, inputs)[source]

Reduce edge attributes to node attribute, eqn 5 in the paper :param e_p: updated bond :param inputs: the whole input list

Returns: summed tensor

rho_v_u(v_p, inputs)[source]
Parameters
  • v_p (tf.Tensor) – updated atom/node attributes

  • inputs (Sequence) – list or tuple for the graph inputs

Returns

atom/node to global/state aggregated tensor