Keras construye rápidamente modelos de redes neuronales
El marco de aprendizaje profundo KERAS: cree una red neuronal como bloques de construcción. Se divide principalmente en siete partes. Cada parte solo requiere unas pocas funciones API de Keras para su implementación. Los usuarios pueden crear modelos de redes neuronales capa por capa, como bloques de construcción.
1. Crear un modelo Crear un modelo
2. Agregar niveles y agregar capas
3. Compile el modelo
4. Llenado y ajuste de datos
5. Evaluación del modelo
6. Predicción del modelo
7. Guardado del modelo
Los siguientes capítulos. Presentará cada parte en detalle. . .
Keras tiene principalmente tres modelos: modelo secuencial, modelo funcional y modelo de subclase.
Antes de comenzar a crear un modelo, es necesario introducir los módulos tensorflow y keras, y luego crear un modelo secuencial.
La API secuencial se define de la siguiente manera:
El parámetro de capas puede estar vacío y luego las capas se agregan al modelo mediante el método add y, en consecuencia, las capas en el modelo. se eliminan mediante el método pop.
Para crear un modelo API funcional, puedes llamar a Keras. Modelos que especifican múltiples entradas y múltiples salidas.
Karas. Definición del modelo:
Las capas son los componentes básicos de las redes neuronales. Una capa contiene métodos de cálculo de tensor de entrada y salida y algunos estados, que se almacenan en variables de TensorFlow (es decir, el peso de la capa).
Las capas se dividen principalmente en seis categorías: capa base, capa central, capa base de volumen, capa de piscina, capa de circulación y capa de fusión.
Las clases derivadas se pueden implementar de las siguientes maneras:
** init(): Define las propiedades de la capa y crea variables estáticas de la capa.
** build(self, input_shape): crea una variable relacionada con la entrada, puedes llamar a add_weight().
** call(self, *args, **kwargs): asegúrese de realizar la llamada después de haber llamado a build().
** get_config(self): Devuelve un tipo de diccionario que contiene la configuración utilizada para inicializar esta capa.
Cree una clase derivada de SimpleDense y agregue pesos entrenables en la función build(). Ejecute y = entrada * w b.
Resultado del resultado:
Cree una clase derivada de ComputeSum y agregue pesos no entrenables a la función init. Después de agregar los elementos de la matriz de entrada a lo largo del eje 0, x=x self.total
El resultado resultante:
La capa central es la capa más utilizada y se utiliza para datos. transformación y procesamiento.
La capa densa es la llamada capa de red neuronal completamente conectada, o capa completamente conectada para abreviar. Cada neurona en una capa completamente conectada está completamente conectada a todas las neuronas de la capa anterior.
Dense implementa las siguientes operaciones: salida = activación (sesgo de punto (entrada, núcleo)), donde activación es la función de activación calculada elemento por elemento, núcleo es la matriz de peso creada por la capa de red y sesgo es creado por su vector Bias (solo es útil si use_bias es True).
Aplicar la función de activación a la salida. Procesamiento aritmético de las señales de entrada después de que ingresan a la neurona.
Las curvas de comparación de sigmoide, tanh, ReLU y softplus se muestran en la siguiente figura:
La función de activación se puede lograr estableciendo una activación de capa de activación separada o pasándola al construir el objeto de capa Parámetros de activación que se deben lograr:
El abandono establece aleatoriamente la proporción de unidades de entrada en 0 en cada actualización durante el entrenamiento, lo que ayuda a evitar el sobreajuste.
Las entradas que no estén configuradas en 0 se amplificarán en 1/(velocidad 1), por lo que la suma de todas las entradas seguirá siendo la misma.
Tenga en cuenta que la capa Abandono solo se aplica cuando el entrenamiento se establece en Verdadero, por lo que no se eliminan valores durante la inferencia. Cuando se utiliza model.fit, el entrenamiento se establece automáticamente en Verdadero en consecuencia.
Aplana la entrada. No afecta el tamaño del lote. Nota: Si la forma de entrada es (por lotes) sin ejes de características, el aplanamiento aumentará el tamaño del canal y la forma de salida es (por lotes, 1).
Ajusta la entrada a un tamaño específico
Encapsula cualquier expresión como un objeto Layer. en la capa Lambda para que cualquier función de TensorFlow pueda usarse al construir el modelo. La capa lambda es mejor para operaciones simples o experimentos rápidos. La capa Lambda se conserva serializando el código de bytes de Python.
Sobrescribe la secuencia con un valor de anulación para omitir pasos de tiempo.
Para cada paso de tiempo del tensor de entrada (la primera dimensión del tensor), si el valor del tensor de entrada es igual a valor_máscara en todos los pasos de tiempo, entonces ese paso de tiempo se enmascarará en todos los pasos posteriores. capas (saltar). Si alguna capa descendente no admite superposiciones pero aún recibe dicha información de superposición de entrada, se generará una excepción.
Por ejemplo:
La incrustación es un método para convertir variables discretas en representaciones vectoriales continuas. Esta capa solo se puede utilizar como primera capa del modelo.
La incrustación tiene principalmente los siguientes tres propósitos: encontrar vecinos más cercanos en el espacio de incrustación, lo que puede usarse para hacer recomendaciones basadas en los intereses del usuario. como entrada para tareas de aprendizaje supervisadas. Se utiliza para visualizar relaciones entre diferentes variables discretas.
Por ejemplo:
Resultado de salida:
De la introducción en Wikipedia, podemos saber que la convolución es la definición (? ¿siguiente?) entre dos funciones en para generar una nueva función. ¿Así que lo que? Entonces qué. ¿La convolución de se puede escribir como? , la definición matemática es la siguiente:
La convolución puede tener diferentes interpretaciones:? Puede considerarse como un núcleo que a menudo llamamos aprendizaje profundo, o también puede corresponder a un filtro en el procesamiento de señales. Entonces qué. Pueden ser lo que llamamos características del aprendizaje automático o pueden ser señales en el procesamiento de señales. ¿Se pueden considerar correctos f y g(?)? Suma ponderada.
Operación de convolución unidimensional en el dominio del tiempo:
Operación de convolución de imagen bidimensional:
El propósito de la operación de convolución es extraer diferentes características de la entrada . La primera capa convolucional solo puede extraer algunas características de bajo nivel, como bordes, líneas, esquinas, etc., y más capas de redes pueden extraer iterativamente características más complejas de características de bajo nivel.
La capa de convolución unidimensional (convolución de dominio en tiempo real) se utiliza para realizar filtrado de vecindad en señales de entrada unidimensionales.
Por ejemplo:
Resultado de salida:
Capa de convolución 2D (como la convolución espacial de la imagen).
Por ejemplo:
Resultado de salida:
Capa convolucional 3D (por ejemplo, convolución espacial en volumen)
Por ejemplo: p>
Salida del resultado:
Convolución 1D separable en profundidad. Esta capa realiza una convolución profunda en los canales por separado y luego realiza una convolución puntual en los canales combinados. Si use_bias es True y se proporciona un inicializador de sesgo, agregará un vector de sesgo a la salida. Luego, opcionalmente, aplica una función de activación para producir el resultado final.
Convolución 2D separable en profundidad. La convolución separable implica realizar primero una convolución en el espacio profundo (que actúa en cada canal de entrada por separado) y luego realizar una convolución puntual, que combina los canales de salida resultantes. El parámetro Depth_multiplier controla cuántos canales de salida se generan para cada canal de entrada en pasos de profundidad.
Intuitivamente, la convolución separable puede entenderse como un método para descomponer el núcleo de convolución en dos núcleos más pequeños, o una versión extrema del bloque Inception.
Capas convolucionales transpuestas (a veces llamada deconvolución).
La necesidad de convoluciones transpuestas a menudo surge del deseo de convertir algo con el tamaño de la salida de la convolución en algo con el tamaño de la entrada de la convolución usando una transformación opuesta a la dirección de convolución normal, mientras se mantiene un patrón de conexión compatible con la convolución.
La capa de agrupación imita el sistema visual humano para reducir la dimensionalidad de los datos y utilizar características de nivel superior para representar la imagen. El propósito de la combinación es reducir la redundancia de información y mejorar la invariancia de escala y la invariancia de rotación del modelo. Evite el sobreajuste.
Por lo general, hay capas de agrupación máxima y capas de agrupación promedio.
Hay tres formas de capas de agrupación: 1D se usa para datos unidimensionales, 2D se usa generalmente para datos de imágenes bidimensionales y 3D se usa para datos de imágenes con datos de series de tiempo.
La red neuronal recurrente (RNN) se basa en la idea de modelo de memoria. Se espera que la red pueda recordar las características anteriores e inferir los resultados posteriores en función de las características. La estructura general de la red continúa cíclicamente, por lo que se denomina RNN.
La memoria de largo plazo $TERM se publicó por primera vez en 1997. Debido a su estructura de diseño única, LSTM es adecuado para procesar y predecir eventos importantes en series de tiempo con largos intervalos y retrasos.
Ejemplo:
Resultado de salida:
Unidad recurrente cerrada GRU - Cho et al.
En LSTM, se introducen tres funciones de puerta: puerta de entrada, puerta de olvido y puerta de salida para controlar el valor de entrada, el valor de memoria y el valor de salida. En el modelo GRU, sólo hay dos puertas: la puerta de actualización y la puerta de reinicio. En comparación con LSTM, GRU tiene una "puerta" menos y varios parámetros menos, pero puede lograr las mismas funciones que LSTM. Teniendo en cuenta la potencia informática y el coste de tiempo del hardware, a menudo elegimos el GRU más "práctico".
Por ejemplo:
Resultado de salida:
Clase base de capa de red neuronal recurrente.
Especifique una descripción del estado inicial de RNN
El estado inicial de las capas RNN se puede especificar simbólicamente llamándolas con el argumento de palabra clave estado_inicial. El valor de estado_inicial debe ser un tensor o una lista de tensores que representen el estado inicial de la capa RNN.
El estado inicial de una capa RNN se puede especificar numéricamente llamando al método reset_states con el argumento de la palabra clave States. El valor de los estados debe ser una matriz Numpy o una lista de matrices Numpy que representen el estado inicial de la capa RNN.
Instrucciones para pasar constantes externas a RNN
Puedes utilizar el argumento de palabra clave constantes de RNN. llame (y RNN.call) para pasar constantes "externas" a la celda. Esto requiere que el método cell.call acepte las mismas constantes de argumento de palabra clave. Estas constantes se pueden usar para ajustar las transiciones celulares para entradas estáticas adicionales (que no cambian con el tiempo) y también se pueden usar para mecanismos de atención.
Por ejemplo:
Antes de entrenar el modelo, necesitamos configurar el proceso de aprendizaje, que se realiza mediante el método de compilación.
Recibe tres parámetros: optimizador opt.