Dividida en 2 partes, la primera parte es una introducción general y la segunda parte es mi propia comprensión del código.
Tabla de contenido
Proceso general de código de tarea de marcado de secuencia
(3) Entrenamiento de modelos y ajuste de parámetros
(4) Guarde el modelo en formato ckpt
Interpretación del bloque de código de la tarea de anotación de secuencia
Proceso general de código de tarea de marcado de secuencia
- Se utiliza principalmente para proyectos de extracción de entidades, pero también para otros proyectos de etiquetado de secuencias, basados en BiLSTM + CRF
Proceso de implementación
(1) Procesamiento previo de datos: convierta los datos de la etiqueta manual en datos en formato de etiqueta biológica
(2) Construcción del modelo
(3) Entrenamiento de modelos y ajuste de parámetros
- batch_size se usa para establecer el tamaño del lote, la computadora local generalmente se establece en 32
- hidden_dim se utiliza para establecer la dimensión de la capa oculta
- lr se usa para establecer la tasa de aprendizaje, generalmente comenzando a elegir 0.001, cuando la precisión del entrenamiento es difícil de mejorar, cargar el modelo óptimo, ajustar la tasa de aprendizaje a 1/10 del anterior y entrenar nuevamente
- cudnnlstm se usa para elegir si usar cudnnlstm para el entrenamiento
- El parámetro de abandono se utiliza para fortalecer la capacidad de generalización del modelo. Por lo general, se establece en 0.5. Cuando el modelo se entrena y se convierte de ckpt a pb, es necesario eliminar el abandono
(4) Guarde el modelo en formato ckpt
(5) Despliegue del modelo
Utilice el lenguaje java para escribir código de implementación
Lo anterior se refiere a la introducción anterior a gitlab
Interpretación del bloque de código de la tarea de anotación de secuencia (tome la implementación del tren como ejemplo)
La entrada principal del código está en main.py
Seleccione el modo de programa que se ejecutará de acuerdo con los hiperparámetros, el modo es test_ckpt, test_pb, y el hiperparámetro de tren está predeterminado para entrenar
Preprocesamiento de datos
El código dataPreprocess.py hace principalmente 3 cosas
1. Gire bio
Exportar el contenido de la base de datos de mongo según el resultId
Convierta los datos en un formato de etiqueta de secuencia, y el formato de datos guardados es
ID de etiqueta, ID de resultado de etiqueta, tabla de colección de etiquetas
2, obtener etiqueta
Según los datos de entrenamiento, convertidos a datos con etiquetas antiguas
3. Almacene el contenido por separado
cutFile se divide en tres partes: f1, f2 y f3 según el tamaño de num.
Construcción del modelo
Compruebe el tren en la clase Aplicar en main.py
Función principal de entrenamiento de modelos
Importe un archivo que básicamente contenga todas las palabras y conviértalo en forma de char-id e id-char para la copia de seguridad
Entonces la función load_data regresa
train_data, dev_data, tag2id, id2tag
train_data, dev_data se entrenará, el conjunto de prueba devuelve la palabra índice-palabra carácter índice-marca índice
tag2id, id2tag serializar etiqueta como (E-proj_name: 9)
Luego la función BatchManager, regresa
Redondea para obtener cuántos nudos hay en total
----------- Creo que a partir de aquí, el proceso de preentrenamiento finalmente ha terminado
Luego abre una sesión de tensorflow,
Crea modelos y reutiliza parámetros
Puedes ver todas las capas de construcción en el módulo de modelo.
self.add_placeholders () agregar marcadores de posición self.lookup_layer_op () agregar características "palabras" self.bilstm_op () agregar lstm bidireccional self.loss_layer_op () capa de pérdida crf usar self.optimizer_op () definir optimizador self.add_summary () agregar resumen
Luego ejecute el modelo por lotes
Luego evalúa carreras y retornos
valor f1
Entonces modelo guardado
Completar