コード例 #1
0
ファイル: gat.py プロジェクト: MarcFish/myne
parser.add_argument("--lr", type=float, default=1e-4)
parser.add_argument("--weight_decay", type=float, default=1e-4)
parser.add_argument("--epoch", type=int, default=50)
parser.add_argument("--dropout_prob", type=float, default=0.3)
parser.add_argument("--batch_size", type=int, default=512)
parser.add_argument("--num_sample_step", type=int, default=100)

arg = parser.parse_args()

cora = Cora()

A_in = keras.layers.Input((None, ))
X_in = keras.layers.Input((cora.g.node_feature_size,))
o = GraphAttention(arg.embed_size)([X_in, A_in])
gat_ = keras.Model(inputs=[X_in, A_in], outputs=o)
o = keras.layers.Dropout(arg.dropout_prob)(o)
o = GraphAttention(arg.embed_size, attn_heads_reduction="concat")([o, A_in])
o = GraphAttention(cora.g.label_size, attn_heads=1, activation="sigmoid")([o, A_in])

gat = keras.Model(inputs=[X_in, A_in], outputs=o)
gat.compile(loss=keras.losses.SparseCategoricalCrossentropy(),
            optimizer=tfa.optimizers.AdamW(learning_rate=arg.lr, weight_decay=arg.weight_decay),
            metrics=[keras.metrics.SparseCategoricalAccuracy()])
A = cora.g.adj.toarray()
X = cora.g.node_feature
sample = RandomSubGraph(cora.g, arg.batch_size, arg.num_sample_step)
data = sample.supervised_feature()
gat.fit(data, epochs=arg.epoch, shuffle=False)
embedding_matrix = gat_([X, A])
embed_visual(embedding_matrix, cora.g.node_label, filename="./results/img/cora_gat.png")
コード例 #2
0
graphsage_ = keras.Model(inputs=[X_in, A_in], outputs=o)
o = keras.layers.Dropout(arg.dropout_prob)(o)
o = GraphSageConv(arg.embed_size)([o, A_in])
o = GraphSageConv(cora.g.label_size, activation="sigmoid")([o, A_in])

supervised_graphsage = keras.Model(inputs=[X_in, A_in], outputs=o)
supervised_graphsage.compile(loss=keras.losses.SparseCategoricalCrossentropy(),
            optimizer=tfa.optimizers.AdamW(learning_rate=arg.lr, weight_decay=arg.weight_decay),
            metrics=[keras.metrics.SparseCategoricalAccuracy()])
A = cora.g.adj.toarray()
X = cora.g.node_feature
sample = RandomSubGraph(cora.g, arg.batch_size, arg.num_sample_step)
data = sample.supervised_feature()
supervised_graphsage.fit(data, epochs=arg.epoch, shuffle=False)
embedding_matrix = graphsage_([X, A])
embed_visual(embedding_matrix, cora.g.node_label, filename="./results/img/cora_graphsage_supervised.png")

# unsupervised
A_in = keras.layers.Input((None, ), batch_size=arg.batch_size)
X_in = keras.layers.Input((cora.g.node_feature_size,), batch_size=arg.batch_size)
labels = keras.layers.Input((), batch_size=arg.batch_size)
o = GraphSageConv(arg.embed_size)([X_in, A_in])
o = keras.layers.Dropout(arg.dropout_prob)(o)
o = GraphSageConv(arg.embed_size)([o, A_in])
o = GraphSageConv(arg.embed_size)([o, A_in])
train_o = SampleSoftmaxLoss(node_size=cora.g.node_size)([labels, o])
unsupervised_graphsage = keras.Model(inputs=[X_in, A_in], outputs=o)
unsupervised_graphsage_train = keras.Model(inputs=[X_in, A_in, labels], outputs=train_o)
unsupervised_graphsage_train.compile(optimizer=tfa.optimizers.AdamW(learning_rate=arg.lr, weight_decay=arg.weight_decay))

A = cora.g.adj.toarray()
コード例 #3
0
ファイル: line.py プロジェクト: MarcFish/myne
if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--embed_size", type=int, default=128)
    parser.add_argument("--lr", type=float, default=1e-4)
    parser.add_argument("--weight_decay", type=float, default=1e-4)
    parser.add_argument("--epoch_size", type=int, default=500)
    parser.add_argument("--batch_size", type=int, default=512)

    arg = parser.parse_args()

    gpus = tf.config.experimental.list_physical_devices('GPU')
    if gpus:
        try:
            for gpu in gpus:
                tf.config.experimental.set_memory_growth(gpu, True)
        except RuntimeError as e:
            print(e)

    cora = Cora()
    batch = cora.g.edge_array[:, 0]
    label = cora.g.edge_array[:, 1]
    model = LINE(cora.g.node_size, arg.embed_size, order=2)
    model.compile(optimizer=tfa.optimizers.AdamW(
        learning_rate=arg.lr, weight_decay=arg.weight_decay))
    model.fit((batch, label), batch_size=arg.batch_size, epochs=arg.epoch_size)
    embedding_matrix = model(cora.g.node_array)
    embed_visual(embedding_matrix,
                 label_array=cora.g.get_nodes_label(),
                 filename="./results/img/cora_line.png")
コード例 #4
0
ファイル: sdne.py プロジェクト: MarcFish/myne
    arg = parser.parse_args()

    gpus = tf.config.experimental.list_physical_devices('GPU')
    if gpus:
        try:
            for gpu in gpus:
                tf.config.experimental.set_memory_growth(gpu, True)
        except RuntimeError as e:
            print(e)

    cora = Cora()

    def gen():
        for batch_num in range(cora.g.node_size // arg.batch_size):
            start_index = batch_num * arg.batch_size
            end_index = (batch_num + 1) * arg.batch_size
            adj_batch_train = cora.g.adj_csr[start_index:end_index, :].toarray().astype(np.float32)
            adj_mat_train = adj_batch_train[:, start_index:end_index]
            b_mat_train = np.ones_like(adj_batch_train).astype(np.float32)
            b_mat_train[adj_batch_train != 0] = arg.beta
            yield (adj_batch_train, adj_mat_train, b_mat_train),
    data = tf.data.Dataset.from_generator(gen, output_signature=((tf.TensorSpec(shape=[arg.batch_size, cora.g.node_size], dtype=tf.float32), tf.TensorSpec(shape=[arg.batch_size, arg.batch_size], dtype=tf.float32), tf.TensorSpec(shape=[arg.batch_size, cora.g.node_size], dtype=tf.float32)),))
    data = data.prefetch(tf.data.experimental.AUTOTUNE)

    model = SDNE(cora.g.node_size, arg.embed_size, alpha=arg.alpha)
    model.compile(optimizer=tfa.optimizers.AdamW(learning_rate=arg.lr, weight_decay=arg.weight_decay))
    model.fit(data, epochs=arg.epoch_size)

    embedding_matrix = model(cora.g.adj.toarray())
    embed_visual(embedding_matrix, cora.g.get_nodes_label(), filename="./results/img/cora_sdne.png")
コード例 #5
0
ファイル: gcrn.py プロジェクト: MarcFish/myne
              {"units": arg.embed_size}))(adjs, initial_state=nodes_embed)
cls_o = keras.layers.Dense(book.g.label_size, activation="sigmoid")(o)
supervised_gcrn_ = keras.Model(inputs=(nodes, adjs), outputs=o)
supervised_gcrn = keras.Model(inputs=[nodes, adjs], outputs=cls_o)
supervised_gcrn.compile(loss=keras.losses.SparseCategoricalCrossentropy(),
                        optimizer=tfa.optimizers.AdamW(
                            learning_rate=arg.lr,
                            weight_decay=arg.weight_decay),
                        metrics=[keras.metrics.SparseCategoricalAccuracy()])
supervised_gcrn.fit(data, epochs=arg.epoch_size, shuffle=False)

dis_array = np.stack([adj.toarray() for adj in book.g.discrete_adj_list],
                     axis=1)
embedding_matrix = supervised_gcrn_([book.g.node_array, dis_array])
embed_visual(embedding_matrix,
             book.g.node_label,
             filename="./results/img/book_gcrn_supervised.png")

# unsupervised
data = sample.unsupervised()
nodes = keras.layers.Input(shape=(), batch_size=arg.batch_size)
adjs = keras.layers.Input(shape=(None, None), batch_size=arg.batch_size)
labels = keras.layers.Input((), batch_size=arg.batch_size)
nodes_embed = keras.layers.Embedding(input_dim=book.g.node_size,
                                     output_dim=arg.embed_size)(nodes)
o = keras.layers.RNN(
    GCRN2Cell(arg.embed_size, GraphAttention,
              {"units": arg.embed_size}))(adjs, initial_state=nodes_embed)
o = keras.layers.Dense(book.g.label_size, activation="sigmoid")(o)
train_o = SampleSoftmaxLoss(node_size=book.g.node_size)([labels, o])