Notas prácticas de estudio de la red neuronal Pytorch_43 Figura Biblioteca DGL de red neuronal: Introducción + Instalación + Desinstalación + Conjunto de datos + Biblioteca PYG + Biblioteca NetWorkx

La biblioteca DGL es un marco de redes neuronales gráficas lanzado conjuntamente por la Universidad de Nueva York y Amazon. Admite el procesamiento de gráficos heterogéneos y códigos de redes neuronales gráficas heterogéneas relacionados con código abierto. También ha logrado buenos resultados en la implementación de modelos conocidos. en la industria como GCMC y RGCN Efecto.

1 biblioteca DGL

1.1 Implementación y rendimiento de la biblioteca DGL

Implementar GNN no es fácil porque requiere un alto rendimiento de GPU en datos irregulares.

1.1.1 Introducción a la biblioteca DGL

La capa lógica de la biblioteca DGL utiliza campos de vértices para facilitar la comprensión del código. Al mismo tiempo, se ha trabajado mucho en la memoria subyacente y la eficiencia operativa, para que el marco pueda ejercer un mejor rendimiento.

1.1.2 Características de la biblioteca DGL

GCMC: la optimización de memoria de DGL admite el entrenamiento en el conjunto de datos MovieLens10M en una GPU (la implementación original requería que los datos se cargaran dinámicamente desde la CPU), lo que reduce el tiempo de entrenamiento de 24 horas a poco más de 1 hora.

RGCN: RGCN se vuelve a implementar utilizando una nueva interfaz de gráficos heterogéneos. Reducción de la sobrecarga de memoria.

HAN: La interfaz flexible provista puede transformar un gráfico heterogéneo en un gráfico homogéneo a través de una ruta meta.

Metapath2vec: la nueva implementación de muestreo de metapath es 2 veces más rápida que la implementación original.

1.1.3 Biblioteca de modelos de química molecular DGL-Chem

La biblioteca molecular proporciona modelos preentrenados que incluyen la predicción de propiedades moleculares y la generación de estructuras moleculares, así como el gráfico de conocimiento de entrenamiento que incorpora el paquete especial DGL-KE. Entre ellos, el rendimiento de DGL-KE es aún mejor.

En una sola GPU, DGL-KE puede entrenar incrustaciones de gráficos FB15K usando el modelo TransE clásico en 7 minutos. Mientras que GraphVite (v0.1.0) tarda 14 minutos en calcularse en 4 GPU.

La primera versión de DGL-KE lanzó los modelos TransE, CompEx y Distmut, compatibles con el entrenamiento de CPU, el entrenamiento de GPU, el entrenamiento mixto de CPU y GPU y el entrenamiento de múltiples procesos en una sola máquina.

1.2 Instalar la biblioteca DGL

1.2.1 Comprobar la versión local de CUDA

Entrar en CMD

nvcc --versión

1.2.2 Ver versión

Consulta de versión DGL correspondiente a CUDA (64 bits) https://conda.anaconda.org/dglteam/linux-64

1.2.3 Versión instalada

conda install -c dglteam dgl-cuda11.3

1.2.4 Desinstalar DGL

Si ha instalado una versión DGL innecesaria, como 0.7.1 y desea reemplazarla con la versión 0.4.3, debe eliminar la versión existente:

Elimine el DGL actual de forma predeterminada: conda uninstall -c dglteam dgl-cuda10.2

(cuda10.2 se puede ajustar según su propio entorno)

Especifique la versión eliminada: conda uninstall -c dglteam dgl-cuda10.2==0.5.0
(cuda10.2==0.5.0 se puede ajustar según su propio entorno, use la lista de conda para ver la versión actual utilizada)

1.3 Conjuntos de datos en la biblioteca DGL

1.3.1 Sst (banco de árboles de opiniones de Stanford, banco de árboles de opiniones de Stanford)

Cada muestra es una oración con estructura de árbol y los vértices de las hojas representan palabras; cada vértice también tiene anotaciones de sentimientos, que se dividen en 5 categorías (muy negativo, negativo, neutral, positivo, muy positivo)

1.3.2 Karate Cub

Solo hay un gráfico en el conjunto de datos y los vértices del gráfico describen si un usuario en una red social es miembro de un club de kárate.

1.3.3 Gráfico de cationes

Los vértices representan autores y los bordes representan relaciones de citas.

1.3.4 CORA

Los vértices representan autores y los bordes representan relaciones de citas.

1.3.5 CORAFULL

Una extensión del conjunto de datos CORA, donde los vértices representan artículos y los bordes representan relaciones de citas entre artículos.

1.3.6 AmazonCoComprar

Los vértices representan mercancías y los bordes representan dos cocientes que a menudo se compran juntos. Las funciones de vértice representan reseñas de productos y las etiquetas de categoría de vértice representan categorías de productos.

3.7 Coautor

Los vértices representan a los autores y los bordes representan las relaciones de los artículos en coautoría. Las características de vértice representan palabras clave en el artículo del autor, y las etiquetas de categoría de vértice representan el campo de investigación del autor.

3.8 MiniGCDalaset (es decir, conjunto de datos de clasificación de minigráficos, conjunto de datos de clasificación de minigráficos)

Contiene 8 tipos diferentes de gráficos, incluidos gráfico de ciclo, gráfico de estrella, gráfico de rueda, gráfico de piruleta, gráfico de hipercubo, gráfico de cuadrícula, gráfico de grupo y gráfico de escalera circular.

3.9 Niveles TUD

Conjunto de datos de kernel de gráficos en clasificación de gráficos.

3.10 GINDataset (es decir, conjunto de datos de red de grafos de isomorfismo, conjunto de datos de red de grafos de isomorfismo)

Un subconjunto compacto del conjunto de datos del núcleo gráfico. Los conjuntos de datos contienen formatos compactos de conjuntos de datos de kernel de gráficos populares, incluidos 4 conjuntos de datos bioinformáticos (MUTAG, NCH, PROTEINS, PTC) y 5 conjuntos de datos de redes sociales (COLAB, IMDBBNARY, MDBMULT, REDDITBINARY, REDDITMULT5K).

3.11 PPIDataset (es decir, conjunto de datos de interacción proteína-proteína, conjunto de datos de interacción proteína-proteína)

El conjunto de datos contiene 24 gráficos, cada uno con una cantidad promedio de vértices de 2372, cada uno con 50 características y 121 etiquetas.

3.12 QM7b

Consta de 7211 moléculas, todas las cuales se pueden retrotraer a 14 objetivos de clasificación. Los vértices representan átomos y los bordes representan enlaces.

1.4 Carga de conjuntos de datos en la biblioteca DGL

Cuando está en uso, se puede crear una instancia directamente a través de la clase de conjunto de datos en la biblioteca dg.data.
Los parámetros de instanciación se configuran de acuerdo a la definición del constructor de cada clase de dataset.
el código se muestra a continuación:

# 该代码的作用是创建并加载一个同构图数据集。该代码运行后,会自动从网络上下载指定的数据集
# 并解压缩,然后载入到内存,并返回数据集对象dataset。该数据集类与PyTorch的Dataset类兼容。
dataset=GINDataset('MUTAG',self-loop=True) #数据集为MUTAG,使用自环图

1.4.1 Consejos para la carga de conjuntos de datos

Las clases de conjuntos de datos en la biblioteca dgldata no están bien planificadas, algunas clases se exponen directamente debajo de los datos y algunas clases se encapsulan con una capa adicional.

Por ejemplo, la clase CoraDataset está encapsulada en el archivo citation_graph.py y se debe escribir el siguiente código al cargar:

from dgl.data import citation-graph
data = citation_graph.corapataset()
该代码在执行时会读取指定的数据集,并生成邻接矩阵,然后调用NetWorkx模块根据该邻接矩阵生成图以及训练数据集、测试数据集。

Por lo tanto, al usar el conjunto de datos DGL, también debe buscar por separado en la ruta dgl/data, y prevalecerá el código real en la biblioteca.

1.5 Gráficos en la biblioteca DGL (DGLGraph)

La clase DGLGraph encapsula una estructura gráfica única, que puede entenderse como el núcleo de la biblioteca DGL. La mayoría de las redes neuronales gráficas en la biblioteca DGL se implementan en función de la clase DGLGraph.

1.6 Funciones en línea en la biblioteca DGL

La biblioteca DGL proporciona una gran cantidad de funciones en línea (integradas), que se utilizan principalmente para realizar operaciones en bordes y vértices, y su eficiencia es mucho mayor que la de las funciones ordinarias de procesamiento de gráficos.

Las funciones en línea en la biblioteca DGL se colocan bajo el módulo dgl.function. Al usarlo, debe cooperar con el mecanismo de propagación de mensajes del gráfico DGLGraph para realizar operaciones.

El mecanismo de propagación de mensajes pertenece a la función subyacente de la biblioteca DGL y se usa a menudo en la construcción de modelos de redes neuronales gráficas.

Si solo usa el modelo de red neuronal gráfica empaquetado en la biblioteca DGL, no es necesario que lo entienda.

2 Bibliotecas PYG

La biblioteca PyG es una biblioteca de extensión de aprendizaje profundo geométrico construida en PyTorch que puede aprovechar los núcleos CUDA especializados para lograr un alto rendimiento.

Siguiendo un mensaje simple que pasa API, agrupa la mayoría de las capas convolucionales y de agrupación propuestas recientemente en un marco unificado que admite computación de CPU y GPU y sigue un paradigma de flujo de datos invariable que se puede escalar con Cambio dinámico de la estructura del gráfico a lo largo del tiempo.

3 bibliotecas NetWorkx

NetWorkk es una herramienta de teoría de gráficos y modelado de redes complejas desarrollada en lenguaje Python. Tiene algoritmos de análisis de redes complejos y gráficos comunes integrados, y puede realizar fácilmente tareas como el análisis de datos de redes complejas y el modelado de simulación.

Con NetWorkx, puede almacenar redes en formatos de datos estandarizados y no estandarizados, generar una variedad de redes aleatorias y redes clásicas, analizar estructuras de redes, construir modelos de redes, diseñar nuevos algoritmos de redes y realizar dibujos de redes.

3.1 Instalación y uso de bibliotecas NetWorkx

Dado que la biblioteca de NetWorkx está integrada en el software de Anaconda de forma predeterminada, si se ha instalado Anaconda, la biblioteca de NetWorkx se puede usar directamente.

3.2 Consultando la versión de la biblioteca NetWorkx

import networkx
print(networkx.__version__)
# 2.7.1

3.3 Estructuras gráficas admitidas por las bibliotecas NetWorkx

  1. Gráfico: Gráfico no dirigido sin múltiples aristas.
  2. DiGraph: Gráfico dirigido sin múltiples aristas.
  3. MultiGraph: Gráfico no dirigido con múltiples aristas.
  4. MuliDiGraph: un gráfico dirigido con múltiples aristas.

3.4 Objetos de datos gráficos en bibliotecas NetWorkx

Los objetos de datos gráficos en la biblioteca NetWorkx se pueden convertir en cadenas en formato graphm/file a través de la interfaz nx.generate_graphml. La cadena se almacena en forma de generador y cada subgrafo es un elemento en el generador.

import networkx as nx

G = nx.path_graph(4)
print(list(nx.generate_graphml(G)))

Después de ejecutar el código, se generará el objeto de datos gráficos en el formato de archivo graphml, de la siguiente manera:

['<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml .graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">', ' <graph edgedefault="undirected">', ' <id de nodo="0" />', ' <id de nodo="1" />', ' <id de nodo="2" />', ' <id de nodo="3" />', ' <edge source="0" target="1" / >', ' <borde source="1" target="2" />', ' <edge source="2" target="3" />', ' </graph>', '</graphml>' ]

A través de la descripción del formato de archivo graphml, se realiza la visualización textual de los datos del gráfico, y el mantenimiento de los datos del gráfico se puede completar modificando directamente el contenido del archivo graphml, que es más directo y flexible que usar la función de interfaz .

3.4.1 Persistencia de archivos graphml

Use la interfaz nx_writegraphm para generar objetos gráficos en la memoria. Después de editar, use la interfaz nx.read_graphml para cargar el archivo en la memoria.

3.4.2 Cómo abrir el archivo graphml

El archivo graphml está en formato xml y se puede abrir con el software yEd Graph Edtor

Supongo que te gusta

Origin blog.csdn.net/qq_39237205/article/details/123874778
Recomendado
Clasificación