Ejemplo n.º 1
0
def make_embedding(CV, MODEL, DATA, EMBED):
    DATA_FOLD = DATA + f"/FOLD-{CV}"
    if not os.path.exists(EMBED):
        os.mkdir(EMBED)

    graph, features, labels = load_dataset(DATA, DATA_FOLD)
    fltr = GraphConv.preprocess(graph).astype('f4')
    fltr = ops.sp_matrix_to_sp_tensor(fltr)

    X_in = Input((features.shape[1], ))
    fltr_in = Input((features.shape[0], ), sparse=True)
    X_1 = GraphConv(512, 'relu', True,
                    kernel_regularizer=l2(5e-4))([X_in, fltr_in])
    X_1 = Dropout(0.5)(X_1)
    X_2 = GraphConv(256, 'relu', True,
                    kernel_regularizer=l2(5e-4))([X_1, fltr_in])
    X_2 = Dropout(0.5)(X_2)
    X_3 = GraphConv(128, 'relu', True,
                    kernel_regularizer=l2(5e-4))([X_2, fltr_in])
    X_3 = Dropout(0.5)(X_3)
    X_4 = GraphConv(64, 'linear', True,
                    kernel_regularizer=l2(5e-4))([X_3, fltr_in])
    X_5 = Dense(labels.shape[1], use_bias=True)(X_4)

    loaded_model = load_model(f"{MODEL}")
    model_without_task = Model(inputs=[X_in, fltr_in], outputs=X_4)
    model_without_task.set_weights(loaded_model.get_weights()[:8])

    final_node_representations = model_without_task([features, fltr],
                                                    training=False)
    save_embedding(final_node_representations, EMBED, DATA_FOLD, CV)
Ejemplo n.º 2
0
    def load_folded_dataset(self, path):
        with open(path + "/graph.json", 'r') as f:
            graph_json = json.load(f)
        graph = nx.json_graph.node_link_graph(graph_json)
        adjacency_mat = nx.adjacency_matrix(graph)
        fltr = GraphConv.preprocess(adjacency_mat).astype('f4')

        self.fltr = ops.sp_matrix_to_sp_tensor(fltr)
        self.features = np.load(path + "/feats.npy")
        self.train_mask = np.load(path + "/train_mask.npy")
        self.valid_mask = np.load(path + "/valid_mask.npy")
        self.train_labels = GCN.labels[self.train_mask]
        self.valid_labels = GCN.labels[self.valid_mask]
Ejemplo n.º 3
0
                                        c2v_k=50,
                                        t2v_k=100,
                                        maxlen=maxlen)

    for inum in range(2, 3):

        graph_dict, \
        tagDict_train, tagDict_dev, tagDict_test, \
        word_vob, word_id2word, word_W, w2v_k, \
        char_vob, char_id2char, char_W, c2v_k, \
        target_vob, target_id2word, \
        posi_W, posi_k, type_W, type_k, \
        max_s, max_posi, max_c = pickle.load(open(datafile, 'rb'))

        A = nx.adjacency_matrix(nx.from_dict_of_lists(graph_dict))
        fltr = GraphConv.preprocess(A).astype('f4')
        print('fltr.toarray.shape ... ', fltr.toarray().shape)

        nn_model = SelectModel(modelname,
                               node_count=len(graph_dict),
                               wordvocabsize=len(word_vob),
                               tagvocabsize=len(target_vob),
                               posivocabsize=max_posi + 1,
                               charvocabsize=len(char_vob),
                               word_W=word_W,
                               posi_W=posi_W,
                               tag_W=type_W,
                               char_W=char_W,
                               input_sent_lenth=max_s,
                               w2v_k=w2v_k,
                               posi2v_k=max_posi + 1,
        os.mkdir(models)
    if not os.path.exists(MODEL):
        os.mkdir(MODEL)
    DATA = f"./Data/results/v3/FOLD-{1}"

    logging.basicConfig(filename=f"{MODEL}/train.log", level=logging.DEBUG)
    logger = logging.getLogger()
    logger.info(f"Path for Dataset = {DATA}")
    logger.info(f"Path for Models = {MODEL}")

    labels = np.load("./Data/results/v3/labels.npy")
    with open(DATA + "/graph.json", 'r') as f:
        graph_json = json.load(f)
    graph = nx.json_graph.node_link_graph(graph_json)
    adjacency_mat = nx.adjacency_matrix(graph)
    fltr = GraphConv.preprocess(adjacency_mat).astype('f4')

    fltr = ops.sp_matrix_to_sp_tensor(fltr)
    features = np.load(DATA + "/feats.npy")
    train_mask = np.load(DATA + "/train_mask.npy")
    valid_mask = np.load(DATA + "/valid_mask.npy")
    train_labels = labels[train_mask]
    valid_labels = labels[valid_mask]

    strategy = tf.distribute.experimental.ParameterServerStrategy(
        cluster_resolver)
    with strategy.scope():

        def create_model(features_shape, labels_shape):
            X_in = Input((features_shape[1], ))
            fltr_in = Input((features_shape[0], ), sparse=True)
Ejemplo n.º 5
0
from spektral.layers import GraphConv
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dropout

# %%
X_in = Input(shape=(F, ))
A_in = Input((N, ), sparse=True)

X_1 = GraphConv(16, "relu")([X_in, A_in])
X_1 = Dropout(0.5)(X_1)
X_2 = GraphConv(n_classes, "softmax")([X_1, A_in])

model = Model(inputs=[X_in, A_in], outputs=X_2)

# %%
A = GraphConv.preprocess(A).astype("f4")

# %%
model.compile(optimizer="adam",
              loss="categorical_crossentropy",
              weighted_metrics=["acc"])
model.summary()

# %%
# Prepare data
X = X.toarray()
A = A.astype("f4")
validation_data = ([X, A], y, val_mask)

# Train model
model.fit(
# Parameters
l2_reg = 5e-4         # Regularization rate for l2
learning_rate = 1e-3  # Learning rate for SGD
batch_size = 32       # Batch size
epochs = 1000         # Number of training epochs
es_patience = 10      # Patience fot early stopping

# Load data
X_train, y_train, X_val, y_val, X_test, y_test, A = mnist.load_data()
X_train, X_val, X_test = X_train[..., None], X_val[..., None], X_test[..., None]
N = X_train.shape[-2]      # Number of nodes in the graphs
F = X_train.shape[-1]      # Node features dimensionality
n_out = 10                 # Dimension of the target

fltr = GraphConv.preprocess(A)

# Model definition
X_in = Input(shape=(N, F))
# Pass A as a fixed tensor, otherwise Keras will complain about inputs of
# different rank.
A_in = Input(tensor=sp_matrix_to_sp_tensor(fltr))

graph_conv = GraphConv(32,
                       activation='elu',
                       kernel_regularizer=l2(l2_reg))([X_in, A_in])
graph_conv = GraphConv(32,
                       activation='elu',
                       kernel_regularizer=l2(l2_reg))([graph_conv, A_in])
flatten = Flatten()(graph_conv)
fc = Dense(512, activation='relu')(flatten)