def create_GAT_model(graph): generator = FullBatchNodeGenerator(graph, sparse=False, method=None) train_gen = generator.flow([0, 1], np.array([[1, 0], [0, 1]])) gat = GAT( layer_sizes=[2, 2], generator=generator, bias=False, in_dropout=0, attn_dropout=0, activations=["elu", "softmax"], normalize=None, saliency_map_support=True, ) for layer in gat._layers: layer._initializer = "ones" x_inp, x_out = gat.in_out_tensors() keras_model = Model(inputs=x_inp, outputs=x_out) return gat, keras_model, generator, train_gen
def create_GAT_model(graph): generator = FullBatchNodeGenerator(graph, sparse=False) train_gen = generator.flow([1, 2], np.array([[1, 0], [0, 1]])) base_model = GAT( layer_sizes=[8, 8, 2], generator=generator, bias=True, in_dropout=0.5, attn_dropout=0.5, activations=["elu", "elu", "softmax"], normalize=None, ) x_inp, x_out = base_model.in_out_tensors() keras_model = Model(inputs=x_inp, outputs=x_out) return base_model, keras_model, generator, train_gen
generator = FullBatchNodeGenerator(G, method="gat") train_gen = generator.flow(train_subjects.index, train_targets) gat = GAT( layer_sizes=[16, train_targets.shape[1]], activations=["elu", "softmax"], attn_heads=16, generator=generator, in_dropout=0.5, attn_dropout=0.5, normalize=None, ) x_inp, predictions = gat.in_out_tensors() model = Model(inputs=x_inp, outputs=predictions) model.compile( optimizer=optimizers.Adam(lr=0.005), loss=losses.categorical_crossentropy, metrics=["acc"], ) val_gen = generator.flow(val_subjects.index, val_targets) from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint if not os.path.isdir("logs"): os.makedirs("logs") es_callback = EarlyStopping(