Un ejemplo de construcción de una red neuronal artificial basada en Keras

Un ejemplo de construcción de una red neuronal artificial basada en Keras

Inteligencia Artificial (IA) se ha convertido en una dirección popular, y construir una red neuronal es la parte importante más, esta introducción a ejemplos de construcción de nivel de entrada de la red neuronal artificial basado Keras, (backend Tensorflow)
Si no es Python Si lo sabe bien, puede pasar dos horas mirando este tutorial de Python
https://pan.baidu.com/s/139i6QEMFdBuG7EmK8SwhFg
código de extracción: 176t
en el código:

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
import matplotlib.pyplot as plt
np.random.seed(1377)

~ Esta sección es principalmente para importar algunas bibliotecas. Si no está instalado, el método de instalación de Baidu
~ numpy es una biblioteca matemática muy rápida, utilizada principalmente para el cálculo de matrices
~ keras es el protagonista, una red neuronal simple y poderosa para construir el marco, backend Hay Tensorflow y Theano y CNTK
~ matplotlib es principalmente una biblioteca para dibujar
~ random.seed se utiliza para generar números aleatorios

#creat some data
X1=np.linspace(-1,1,200)
np.random.shuffle(X1)
Y=0.5*X1+2+np.random.normal(0,0.05,(200,))
#plot
plt.scatter(X1,Y)
plt.show()

~ Este párrafo se utiliza para generar el conjunto de datos para este experimento. X1 toma 200 números entre -1 y 1 y baraja el orden
~ Luego establece una relación entre Y y X1
~ random.normal es una función de distribución normal, La media es 0, la desviación estándar es 0.05, la forma de salida es (200,), el resultado es Y≈0.5 * X1 + 2
~ el dibujo final es el siguiente
200 conjuntos de datos

X1_train,Y_train=X1[:160],Y[:160]
X1_test,Y_test=X1[160:],Y[160:]

~ El primer 80% del conjunto de datos resultante se incluirá en el conjunto de entrenamiento, y el último 20% se incluirá en el conjunto de prueba (generalmente 8,2 puntos)
~ Lo siguiente comenzará a construir una red neuronal:

model=Sequential()
model.add(Dense(output_dim=1,input_dim=1))
model.compile(loss="mean_squared_error",optimizer='sgd')

~ El modelo usa una estructura secuencial secuencial, una capa conecta una capa
~ Agregue una capa a través de model.add, aquí agregue un Denso (capa completamente conectada), output_dim (número de salida único) = 1, input_dim (número de entrada único Número) = 1
~ model.compile para definir otros parámetros, pérdida (función de pérdida) = mse (mida el valor de pérdida con el error cuadrático medio), optimizador (optimizador) = 'sgd' (optimizador de descenso de gradiente aleatorio)
~ hasta ahora, uno Se construye la red neuronal artificial más simple, el siguiente paso es entrenar la red

print("Traing..........")
for i in range(301):
    loss=model.train_on_batch(X1_train,Y_train)
    if i%50==0:
        print('train loss:',loss)

~ Al entrenar, le decimos la entrada y la salida a la red (aprendizaje supervisado)
~ Entrene a la red a través de model.train_on_batch, devolverá el valor de pérdida del
entrenamiento ~ Entrenamiento 301 veces, imprima el 'valor de pérdida del tren cada 50 veces

print('\nTesting........')
loss=model.evaluate(X1_test,Y_test,batch_size=160)
print('test loss:',loss)
W,b=model.layers[0].get_weights()
print('W:',W,'\nb:',b)

~ Esta sección es la parte de prueba, evalúe el rendimiento de la red entrenada en el conjunto de prueba (evaluar)
~ Debido a que solo construimos una capa (no se cuentan las entradas y salidas), el establecimiento real es Y = W * La función de x + b, cuanto más cerca de W está a 0.5 después del entrenamiento, y más cerca de b está a 2, lo que indica un mejor efecto

Y_pred=model.predict(X1_test)
plt.scatter(X1_test,Y_test)
plt.plot(X1_test,Y_pred)
plt.show()

~ Este párrafo es para predecir el valor Y de la salida a través del conjunto de prueba X1 (esto es lo que a menudo nos importa), para ver si está cerca de Y_test (la pérdida de prueba anterior también tiene el mismo efecto)
~ Veamos el efecto de entrenamiento

~ W y b son cerca de 0,5 y 2
Inserte la descripción de la imagen aquí
~ ordenada linealmente predicho red de salida, la ordenada representa el verdadero punto de salida discreta
- a una entrada en la que la instancia, por favor deje un mensaje si mal
~ problemas de Mo

Publicado 2 artículos originales · elogiado 1 · visitas 45

Supongo que te gusta

Origin blog.csdn.net/qq_45074963/article/details/105317462
Recomendado
Clasificación