Model.train() y model.eval(), Estandarización, Normalización, Abandono, Normalización por lotes comprensión popular

Tabla de contenido

modelo.tren() 与modelo.eval()

Normalización

Estandarización

Normalización por lotes

Abandonar

Parámetro de abandono p en TensorFlow y pytorch

función de activación relu, sigmiod, tanh

nn.Lineal

modelo.tren() 与modelo.eval()

Cuando hay una capa BN (Batch Normalization) o Dropout en el modelo, hay una diferencia entre los dos

necesito estar en

Durante el entrenamiento, model.train() asegura que la capa BN use la media y la varianza de cada lote de datos , y Dropout selecciona aleatoriamente una parte de la conexión de red para entrenar y actualizar los parámetros.

Al probar model.eval() , se garantiza que BN usa la media y la varianza de todos los datos de entrenamiento y Dropout usa todas las conexiones de red.

pytorch corrige automáticamente BN y DropOut, no toma el promedio, pero usa el valor entrenado

Tanto la estandarización como la normalización operan en una determinada característica (una determinada columna)

Por ejemplo: tres columnas de características para cada muestra (fila): altura, peso, presión arterial.

Normalización

Escale el valor de una columna de características numéricas (que se supone que es la columna i ii) en el conjunto entre 0 y 1

Cuando el valor máximo o mínimo de X es un punto extremo aislado, el rendimiento se verá afectado.

Estandarización

Escale el valor de una columna de características numéricas (que se supone que es la i-ésima columna) en el conjunto de entrenamiento a un estado con una media de 0 y una varianza de 1

x_nor = (x-media(x))/std(x)=datos de entrada-media de datos)/desviación estándar de datos

Normalización por lotes

batch_size: Indica el número de datos (muestras) pasados ​​al programa para entrenamiento a la vez

Normalice cada capa en el medio de la red y use Transformación de normalización por lotes para asegurarse de que la distribución de características extraída por cada capa no se destruya.
El entrenamiento es para cada mini-lote, pero la prueba es a menudo para una sola imagen, es decir, no existe el concepto de mini-lote. Dado que los parámetros se fijan después de entrenar la red, la media y la varianza de cada lote son constantes, por lo que la media y la varianza de todos los lotes se liquidan directamente. Todas las normalizaciones por lotes funcionan de manera diferente durante el entrenamiento y las pruebas.

Abandonar

En cada lote de entrenamiento, al ignorar la mitad de los detectores de características, se puede reducir significativamente el sobreajuste

Durante el entrenamiento, las neuronas en cada capa oculta se multiplican por la probabilidad P de ser descartadas y luego activadas.
En las pruebas, todas las neuronas se activan primero y luego la salida de cada neurona de la capa oculta se multiplica por la probabilidad de ser descartada.

Parámetro de abandono p en TensorFlow y pytorch

p(keep_prob)La proporción de la cantidad de nodos reservados en TensorFlow

Las neuronas de esta capa (layer) en pytorch p:serán descartadas aleatoriamente (inactivadas) con posibilidad de p durante cada iteración de entrenamiento, y no participarán en el entrenamiento

#随机生成tensor
a = torch.randn(10,1)
>>> tensor([[ 0.0684],
        [-0.2395],
        [ 0.0785],
        [-0.3815],
        [-0.6080],
        [-0.1690],
        [ 1.0285],
        [ 1.1213],
        [ 0.5261],
        [ 1.1664]])
torch.nn.Dropout(0.5)(a)
>>> tensor([[ 0.0000],  
        [-0.0000],  
        [ 0.0000],  
        [-0.7631],  
        [-0.0000],  
        [-0.0000],  
        [ 0.0000],  
        [ 0.0000],  
        [ 1.0521],  
        [ 2.3328]])

Cambio numérico: 2.3328=1.1664*2

función de activación relu, sigmiod, tanh

En la red neuronal, la entrada y la salida originales son relaciones lineales,

Pero en realidad, muchos problemas no son lineales (por ejemplo, los precios de la vivienda no pueden aumentar linealmente con el aumento del área de la casa),

En este momento, la salida lineal de la red neuronal pasa a través de la función de activación , lo que hace que la relación lineal original se vuelva no lineal , lo que mejora el rendimiento de la red neuronal.

nn.Lineal

Realizar una transformación lineal en los datos de entrada

>>> m = nn.Linear(20, 30)
>>> input = torch.randn(128, 20)
>>> output = m(input)
>>> print(output.size())
torch.Size([128, 30])

El tamaño del tensor cambió de 128 x 20 a 128 x 30

Las acciones que se realizan son:

[128,20]×[20,30]=[128,30]

Enlace de referencia: Notas de estudio de Pytorch 11 - uso de model.train() y model.eval(), Principio de abandono, relu, sigmiod, función de activación de tanh, nn. Análisis lineal, método de salida de todo el tensor - Después de la lluvia Mountain View - Blog Jardín

Estandarización y normalización Explicación súper detallada

Supongo que te gusta

Origin blog.csdn.net/qq_28838891/article/details/127721891
Recomendado
Clasificación