Keras: use Keras para construir una red neuronal de clasificación

1. Introducción

Hoy, Keras se utiliza para construir una red neuronal de clasificación. El conjunto de datos utilizado es MNIST, que es un conjunto de datos de imagen de varios números del 0 al 9.

2. Use Keras para construir una red neuronal de clasificación

2.1 Importar módulos necesarios

import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import RMSprop
np.random.seed(42)

2.2 Preprocesamiento de datos

Keras tiene su propio paquete MNIST, que se divide en un conjunto de entrenamiento y un conjunto de prueba. x es una imagen, y es la etiqueta correspondiente a cada imagen, es decir, qué número es.

La entrada x se convierte en 60,000 * 784 datos, y luego se divide por 255 para normalizar, porque cada píxel está entre 0 y 255, después de la normalización, se convierte entre 0 y 1.

Para y, debe usar una función numpy np_utils.to_categorical modificada por Keras para cambiar y en una forma activa, es decir, y era un valor antes, entre 0-9, y ahora es un vector de tamaño 10. , Cualquiera que sea el número al que pertenece, es 1 en todas las posiciones y 0 en todas las demás posiciones. np_utils.to_categorical asigna vectores de categoría (vectores enteros de 0 a nb_classes) a matrices de categorías binarias para usar en modelos con categorical_crossentropy como función objetivo.

(X_train, y_train),(X_test,y_test) = mnist.load_data()  #返回两个元组
X_train = X_train.reshape(X_train.shape[0],-1)/255    #归一化
X_test = X_test.reshape(X_test.shape[0],-1)/255
y_train = np_utils.to_categorical(y_train,num_classes=10)   #to_categorical就是将类别向量转换为二进制(只有0和1)的矩阵类型表示。其表现为将原有的类别向量转换为独热编码的形式
y_test = np_utils.to_categorical(y_test,num_classes=10)  

2.3. Construir el modelo

(1) modelos. Secuencial, utilizado para construir una capa neural capa por capa;
(2) capas. Denso significa que esta capa neural es una capa totalmente conectada.
(3) Capas. Activación de la función de excitación.
(4) optimizadores. RMSprop El optimizador utiliza RMSprop para acelerar el método de entrenamiento de la red neuronal.

Lo que se usa en la red de regresión es model.add para agregar capas neurales capa por capa.El método de hoy es agregar múltiples capas neuronales directamente dentro del modelo. Es como una tubería de agua, sección por sección. Los datos caen de la sección superior a la sección inferior, y luego a la sección inferior.

El primer párrafo es unir la capa nerviosa densa. 32 es la dimensión de salida y 784 es la dimensión de entrada. Los datos de la primera capa tienen 32 características, que se transmiten a la unidad de excitación. La función de excitación utiliza la función relu. Después de la función de excitación, se convierte en un dato no lineal. Luego pase estos datos a la siguiente capa neural. Para este Denso, definimos la característica con 10 salidas. Del mismo modo, no hay necesidad de definir la dimensión de entrada aquí, porque recibe la salida de la capa anterior. Luego, ingrese la siguiente función softmax para la clasificación.

A continuación, RMSprop se usa como optimizador y sus parámetros incluyen la tasa de aprendizaje, etc. Puede ver el efecto del modelo modificando estos parámetros.

model = Sequential([
    Dense(32,input_dim=784),
    Activation('relu'),   #非线性化
    Dense(10),     #输入32,输出10
    Activation('softmax')
])
rmsprop = RMSprop(lr=0.001,rho=0.9,epsilon=1e-8,decay=0.0)   #RMSProp 优化器,建议使用优化器的默认参数 (除了学习率 lr,它可以被自由调节)

2.4. Activar el modelo

Luego, use model.compile para estimular la red neuronal.

El optimizador puede ser el predeterminado o el que definimos en el paso anterior. La función de pérdida, la clasificación y los problemas de regresión son diferentes y se utiliza la entropía cruzada. Métricas, puede poner el costo, la precisión, la puntuación, etc. que deben calcularse.

model.compile(optimizer=rmsprop,
             loss='categorical_crossentropy',
             metrics=['accuracy'])

2.5 Entrenamiento + Pruebas

print('Training.................')  
model.fit(X_train, y_train, epochs=2, batch_size=32)   #训练
print('\nTesting')
loss, accuracy = model.evaluate(X_test, y_test)   #测试

print('test loss:',loss)
print('test accuracy:',accuracy)

Inserte la descripción de la imagen aquí

233 artículos originales publicados · elogiados 645 · 30,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/weixin_37763870/article/details/105594347
Recomendado
Clasificación