machine learning - redes - ¿Cuándo usar capas in situ en Caffe?
redes neuronales convolucionales paper (1)
Al configurar el blob inferior y superior para que sea el mismo, podemos decirle a Caffe que realice un cómputo "in situ" para preservar el consumo de memoria.
Actualmente sé que puedo usar de forma segura las capas in situ "BatchNorm"
, "Scale"
y "ReLU"
(avíseme si me equivoco). Si bien parece tener algunos problemas para otras capas ( este problema parece ser un ejemplo).
¿Cuándo usar capas in situ en Caffe?
¿Cómo funciona con back-propagation?
Como bien notó, las capas in situ normalmente no funcionan "de fábrica".
Para algunas capas, es bastante trivial ( "ReLU"
y otras capas de activación neuronal).
Sin embargo, para otros requiere un manejo especial en el código. Por ejemplo, la implementación de la capa "PReLU"
tiene una caché específica bottom_memory_
member variable que almacena la información necesaria para backprop.
Puede ver un código similar para otras capas que prueban específicamente if (top[0] == bottom[0])
para ver si la capa se usa en un caso "in situ".
Además, tiene poco sentido tener una capa in situ para la que la entrada y la salida sean de formas diferentes, por lo que capas como "Convolution"
, "InnerProduct"
, "Pool"
no se consideran candidatas para "en el lugar". capas.