Red de conocimiento informático - Material del sitio web - Cómo configurar la estructura de cada capa en Caffe

Cómo configurar la estructura de cada capa en Caffe

Cómo configurar la estructura de cada capa en Caffe

Acabo de instalar Caffe en mi computadora recientemente. Dado que hay diferentes estructuras de capas en la red neuronal y los diferentes tipos de capas tienen diferentes parámetros, seguí las instrucciones. en el sitio web de Caffe. El documento hace un breve resumen.

1. Capa visual

1.1 Capa de convolución

Tipo: CONVOLUCIÓN

Ejemplo

capas {< / p>

nombre: "conv1"

tipo: CONVOLUCIÓN

abajo: "datos"

arriba: "conv1"

blobs_lr: 1 # El multiplicador de la tasa de aprendizaje del filtro

blobs_lr: 2 # El multiplicador de la tasa de aprendizaje del sesgo

weight_decay: 1 # El multiplicador de caída de peso del filtro

p>

weight_decay: 0 # Multiplicador de caída de peso sesgado

convolution_param {

num_output: 96 # Aprende 96 filtros

kernel_size: 11 # Cada filtro es 11x11

zancada: 4 # Cada filtro se aplica a 4 píxeles de distancia

weight_filler {

tipo: "gaussiano" # Inicializa el filtro usando gaussiano distribución

std: 0.01 # stdev es la distribución de 0.01 (el promedio predeterminado es 0)

}

bias_filler {

tipo : "constante" # Inicializa el sesgo a cero (0)

valor: 0

}

}

}

blobs_lr: parámetro utilizado para ajustar la tasa de aprendizaje; en el ejemplo anterior, establezca la tasa de aprendizaje ponderada para que sea la misma que la tasa de aprendizaje proporcionada por el solucionador en ejecución, mientras establece la tasa de aprendizaje sesgado al doble del peso.

weight_decay:

Parámetros importantes de la capa convolucional

Parámetros requeridos:

num_output (c_o): el número de filtros

p>

kernel_size (o kernel_h y kernel_w): tamaño del filtro

Parámetros opcionales:

weight_filler [tipo predeterminado: valor 'const': 0]: parámetro Método de inicialización

bias_filler: método de inicialización de Bias

bias_term [el valor predeterminado es verdadero]: especifica si se habilita el término de sesgo

pad (o pad_h y pad_w) [predeterminado 0 ]: Especifica cuántos píxeles agregar en cada lado del paso

de entrada (o stride_h y stride_w) [predeterminado 1]: Especifica el paso del grupo de filtro

(g) [predeterminado 1]: Si g gt; 1, limitamos la conectividad de cada filtro a un subconjunto de la entrada. Específicamente, los canales de entrada y salida se dividen en grupos g, y el canal del grupo de salida i-ésimo solo se conectará al canal del grupo de entrada i-ésimo.

Cambiar tamaño por convolución:

Entrada: n * c_i * h_i * w_i

Salida: n * c_o * h_o * w_o, donde h_o = ( h_i 2 * pad_h - kernel_h) /stride_h 1, w_o se calcula de la misma manera.

1.2 Pooling

Tipo: POOLING

Ejemplo

Capa {

nombre: "pool1"

tipo: POOLING

abajo: "conv1"

arriba: "pool1"

pooling_param {

pool: MAX

kernel._size: 3 # Agrupar dentro de una región de 3x3

zancada: 2 # Distribuir dos píxeles entre las regiones agrupadas (en el blob inferior)

p >

}

}

Parámetros importantes de la capa convolucional

Parámetros necesarios:

kernel_size (o kernel_h y kernel_w ) : tamaño del filtro

Parámetros opcionales:

pool [MAX predeterminado]: método de agrupación, actualmente hay tres métodos: MAX, AVE y STOCHASTIC

pad (o pad_h y pad_w) [predeterminado 0]: especifica cuántos píxeles agregar para cada entrada

zancada (o stride_h y stride_w) [predeterminado 1]: especifica el tamaño de paso del filtro

p>

Cambiar tamaño agrupando:

Entrada: n * c_i * h_i * w_i

Salida: n * c_o * h_o * w_o, donde h_o = (h_i 2 * pad_h - kernel_h) /stride_h 1, w_o se calcula de la misma manera.

1.3 Normalización de respuesta local (LRN)

Tipo: LRN

La normalización de respuesta local es la normalización del área de entrada local (la activación a se pasa en Generado agregando un peso normalizado (parte denominador) a la nueva activación b), hay dos formas diferentes, una es que el área de entrada es un canal adyacente (LRN entre canales), la otra es un área espacial dentro del mismo canal (Intra-canal). canal LRN)

Calculado dividiendo cada entrada por

Parámetros opcionales:

local_size [predeterminado 5]: para LRN entre canales, es el número de canales adyacentes canales a sumar; para LRN intracanal, es la longitud lateral de la región espacial a sumar

alfa [valor predeterminado 1]: parámetro de escala

beta [valor predeterminado 5 ]: Índice

norm_region [Valor predeterminado ACROSS_CHANNELS]: seleccione el método LRN de ACROSS_CHANNELS o Within_CHANNEL

2 Capa de pérdida

La fuerza impulsora del aprendizaje profundo es. para minimizar la pérdida de resultados y objetivos.

2.1 Softmax

Tipo: SOFTMAX_LOSS

2.2 Suma de Cuadrados/Euclideano

Tipo: EUCLIDEAN_LOSS

2.3 Bisagra / Margen

Tipo: HINGE_LOSS

Ejemplo:

# L1 Norma

capas {

nombre: "pérdida"

tipo: HINGE_LOSS

bottom."pred"

bottom: "etiqueta"

}

# Norma L2

capas {

nombre."loss"

tipo: HINGE_LOSS

abajo: "pred"

abajo: "etiqueta"

arriba: "pérdida"

hinge_loss_param {

norma: L2

}

}

Parámetros opcionales:

norma [predeterminada L1]: seleccione norma L1 o L2

Entrada:

n * c * h * wPredicciones

n * 1 * 1Etiquetas

Salida

1 * 1 * 1Pérdida calculada

2.4 Sigma Entropía cruzada

Tipo: SIGMOID_CROSS_ENTROPY_LOSS

2.5 Infogain

Tipo: INFOGAIN_LOSS

2.6 Precisión y Top-k

Tipo: EXACTITUD

Tipo: Top-k: EXACTITUD

Se utiliza para calcular la exactitud de la salida y el objetivo, esto en realidad no es una PÉRDIDA y no hay paso atrás.

3. Capa de activación/capa de neuronas

En términos generales, la capa de activación opera elemento por elemento, con la entrada y la salida teniendo el mismo tamaño, generalmente no lineal. función.

3.1 ReLU / Rectificado-Lineal y Leaky-ReLU

Tipo: RELU

Ejemplo:

Capa{

nombre: "relu1"

tipo: RELU

abajo: "conv1"

arriba: "conv1"

}

Parámetros opcionales:

pendiente_negativa [predeterminado 0]: especifica la salida cuando el valor de entrada es menor que cero.

ReLU es actualmente la función de activación más utilizada, principalmente porque converge más rápido y mantiene el mismo efecto.

La función ReLU estándar es max(x, 0), y cuando x > 0, la salida general es x, pero cuando x > = 0, la salida es pendiente_negativa. La capa RELU admite el cálculo in situ, es decir, la salida inferior es la misma que la entrada para evitar el consumo de memoria.

3.2 Sigmoide

Tipo: SIGMOIDE

Ejemplo:

capa {

nombre: "encode1neuron"

abajo."encode1"

arriba: "encode1neuron"

tipo: SIGMOID

}

capa SIGMOID Calcule la salida para cada entrada x mediante sigmoide (x).

3.3 TanH / Tangente hiperbólica

Tipo: TANH

Ejemplo:

capas {

nombre: " encode1neuron"

abajo: "encode1"

arriba: "encode1neuron"

tipo: SIGMOID

}

< El La salida de cada entrada x de la capa p>TANH se calcula mediante tanh (x), y la función es la siguiente.

3.3 Valor absoluto

Tipo: ABSVAL

Ejemplo:

capa {

nombre: "capa"

abajo."in"

arriba: "fuera"

tipo: ABSVAL

}

ABSVAL La capa calcula la salida para cada entrada x mediante abs(x).

3.4 Fuente de alimentación

tipo: POWER

Ejemplo:

capa {

nombre: "capa"

abajo: "dentro"

arriba: "fuera"

tipo: ENERGÍA

power_param {

potencia: 1

escala: 1

shift.0

}

}

Parámetros opcionales:

potencia [el valor predeterminado es 1]

escala [el valor predeterminado es 1]

cambio [el valor predeterminado es 0]

La capa de ENERGÍA pasa (cambio escala * x)^ POWER calcula la salida para cada entrada x.

3.5 BNLL

Tipo: BNLL

Ejemplo:

Capa{

nombre: "capa"

abajo: "dentro"

arriba: "fuera"

tipo: BNLL

}

BNLL ( La capa binomial normal de probabilidad logarítmica calcula la salida para cada entrada x calculando log(1 exp(x)) para cada entrada x.

4. Capa de datos

Los datos ingresan a Caffe a través de la capa de datos, que se encuentra en la parte inferior de toda la red. Los datos pueden provenir de una base de datos de alto rendimiento (LevelDB o LMDB) o directamente de la memoria. Si no busca eficiencia, puede leer datos del disco duro en HDF5 o formatos de imagen generales.

4.1 Base de datos

Tipo: 2 en memoria

Tipo: MEMORY_DATA

Parámetros requeridos:

batch_size , canal, alto, ancho: especifique el tamaño de los datos leídos de la memoria

La capa de datos de la memoria lee datos directamente de la memoria sin copiarlos.

Para usarlo, debe llamar a MemoryDataLayer::Reset (desde C) o Net.set_input_arrays (desde Python) para especificar una fuente de datos continua (como una matriz de filas principales 4D), leyendo un fragmento del tamaño de un lote a la vez.

4.3 Entrada HDF5

Tipo: HDF5_DATA

Parámetros requeridos:

fuente: nombre del archivo a leer

batch_size: el número de entradas procesadas a la vez

4.4 Salida HDF5

Tipo: HDF5_OUTPUT

Parámetros requeridos:

nombre_archivo: para generar el nombre del archivo

HDF5 funciona de manera diferente que las otras capas en esta sección. Escribirá el blob de entrada en el disco duro

Imagen 4.5

Tipo: IMAGE_DATA

Parámetros requeridos:

fuente: el nombre del archivo de texto, cada línea proporciona el nombre del archivo y la etiqueta de una imagen

batch_size: el número de imágenes en el lote

Parámetros opcionales:

rand_skip : comienza desde Omite este valor en la entrada, lo cual es útil en el descenso de gradiente estocástico asincrónico (SGD)

shuffle [falso predeterminado]

new_height, new_width: cambia el tamaño de todas las imágenes al tamaño de lotes . ancho: cambia el tamaño de todas las imágenes a este tamaño

4.6 Windows

Tipo: WINDOW_DATA

4.7 Dummy

Tipo: DUMMY_DATA

La capa ficticia se utiliza para el desarrollo y la depuración. El parámetro específico es DummyDataParameter.