Graph convolutional layers.
bash
pip install keras-gcn
GraphConv
```python from tensorflow import keras from keras_gcn import GraphConv
DATA_DIM = 3
data_layer = keras.layers.Input(shape=(None, DATA_DIM)) edge_layer = keras.layers.Input(shape=(None, None)) conv_layer = GraphConv( units=32, step_num=1, )([data_layer, edge_layer]) ```
step_num
is the maximum distance of two nodes that could be considered as neighbors. If step_num
is greater than 1, then the inputs of edges must be 0-1 matrices.
GraphMaxPool
& GraphAveragePool
Pooling layers with the step_num
argument.
input_1 (InputLayer) [(None, None, 256)] 0 []
input_2 (InputLayer) [(None, 256, 256)] 0 []
graph_conv (GraphConv) (None, 256, 32) 8224 ['input_1[0][0]',
'input_2[0][0]']
graph_conv_1 (GraphConv) (None, 256, 16) 528 ['graph_conv[0][0]',
'input_2[0][0]']
lstm (LSTM) (None, None, 128) 197120 ['input_1[0][0]']
flatten (Flatten) (None, 4096) 0 ['graph_conv_1[0][0]']
lstm_1 (LSTM) (None, 32) 20608 ['lstm[0][0]']
concatenate (Concatenate) (None, 4128) 0 ['flatten[0][0]',
'lstm_1[0][0]']
batch_normalization (BatchNorm (None, 4128) 16512 ['concatenate[0][0]']
alization)
dropout (Dropout) (None, 4128) 0 ['batch_normalization[0][0]']
dense (Dense) (None, 128) 528512 ['dropout[0][0]']
dense_1 (Dense) (None, 32) 4128 ['dense[0][0]']
dropout_1 (Dropout) (None, 32) 0 ['dense_1[0][0]']
dense_2 (Dense) (None, 1) 33 ['dropout_1[0][0]']
================================================================================================== Total params: 775,665 Trainable params: 767,409 Non-trainable params: 8,256
========== TRAIN ============
/usr/local/lib/python3.7/dist-packages/nilmtk/elecmeter.py:432: UserWarning: The provided sample_period (1) is shorter than the meter's sample_period (3)
sample_period, default_sample_period
Epoch 1/10
Traceback (most recent call last):
File "/content/drive/MyDrive/Auto_Encoder/DAE/redd-test.py", line 31, in
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1021, in train_function *
return step_function(self, iterator)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1010, in step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1000, in run_step **
outputs = model.train_step(data)
File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 859, in train_step
y_pred = self(x, training=True)
File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 67, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/usr/local/lib/python3.7/dist-packages/keras/engine/input_spec.py", line 200, in assert_input_compatibility
raise ValueError(f'Layer "{layer_name}" expects {len(input_spec)} input(s),'
ValueError: Layer "model" expects 2 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 256, 1) dtype=float32>]
keras gcn layer