Open harpomaxx opened 1 year ago
Matriz de adyacencia Hay que realizar un preprocesamiento a la matriz de adyacencia que consta de sumar la matriz identidad y luego normalizar dicha suma. Spektral tiene implementada una clase que hace esto, pero sólo para el caso de grafos no dirigidos (i.e. matriz de adyacencia simétrica), sin embargo para el caso dirigido la normalización cambia. Una modificación a la clase original que tiene en cuenta el parámetro de simetría: acá
Features Respecto a las features, en la sección 5.2 dicen:
For the citation network datasets, we optimize hyperparameters on Cora only and use the same set of parameters for Citeseer and Pubmed. We train all models for a maximum of 200 epochs (training iterations) using Adam (Kingma & Ba, 2015) with a learning rate of 0.01 and early stopping with a window size of 10, i.e. we stop training if the validation loss does not decrease for 10 consecutive epochs. We initialize weights using the initialization described in Glorot & Bengio (2010) and accordingly (row-)normalize input feature vectors. On the random graph datasets, we use a hidden layer size of 32 units and omit regularization (i.e. neither dropout nor L2 regularization).
De allí se pueden tener en cuenta algunos hiperparámetros elegidos. También, habla sobre un (row-)normalize input feature vectors, por lo que armé otra clase que calcularía esta normalización sobre las features
@harpomaxx no he mirado el paper de Glorot & Bengio que citan, por lo que no tengo claro todavía cómo se relaciona la normalización de las features con la inicialización de los pesos, y si eso lo hace spektral por su cuenta o si lo tenemos que aclarar nosotros
La idea es verificar si es necesario realizar algún pre-procesamiento a los datos (por ejemplo normalización), o algún otro detalle a tener en cuenta en las pruebas.
La matriz de identidad es necesario sumarla?