[Implementación de Python de la red neuronal convolucional] implementación de upsampling2D de la capa de upsampling

Fuente del código: https://github.com/eriklindernoren/ML-From-Scratch

Implementación concreta de Conv2D (con zancada, relleno) en una red neuronal convolucional: https://www.cnblogs.com/xiximayou/p/12706576.html

Implementación de la función de activación (sigmoide, softmax, tanh, relu, leakyrelu, elu, selu, softplus): https://www.cnblogs.com/xiximayou/p/12713081.html

Definición de la función de pérdida (error cuadrático medio, pérdida de entropía cruzada): https://www.cnblogs.com/xiximayou/p/12713198.html

Implementación del optimizador (SGD, Nesterov, Adagrad, Adadelta, RMSprop, Adam): https://www.cnblogs.com/xiximayou/p/12713594.html

Proceso de propagación hacia atrás de la capa de convolución: https://www.cnblogs.com/xiximayou/p/12713930.html

Implementación de capa totalmente conectada: https://www.cnblogs.com/xiximayou/p/12720017.html

Implementación de la capa de normalización por lotes: https://www.cnblogs.com/xiximayou/p/12720211.html

Implementación de la capa de agrupación: https://www.cnblogs.com/xiximayou/p/12720324.html

implementación de padding2D: https://www.cnblogs.com/xiximayou/p/12720454.html

Implementación de la capa plana: https://www.cnblogs.com/xiximayou/p/12720518.html

 

class UpSampling2D (Layer): "" " Muestra de
     vecino más cercano de la entrada. Repite las filas y 
    columnas de los datos por tamaño [0] y tamaño [1] respectivamente. 
    Parámetros: 
    ----------- 
    size: tuple 
        (size_y, size_x): la cantidad de veces que se repetirá cada eje. 
    "" " 
    def  __init__ (self, size = (2,2), input_shape = None): 
        self.prev_shape = None 
        self.trainable = True 
        self.size = tamaño 
        self.input_shape = input_shape 

    def forward_pass (self, X, training =Verdadero): 
        self.prev_shape = X.shape
         # Repita cada eje según lo especificado por el tamaño 
        X_new = X.repeat (self.size [0], axis = 2) .repeat (self.size [1], axis = 3 )
         return X_new 

    def backward_pass (self, accum_grad):
         # de Down entrada de la muestra a la anterior forma 
        accum_grad = accum_grad [:,:, :: self.size [0], :: self.size [1 ]]
         volver accum_grad 

    def output_shape (self): 
        canales, altura, ancho = self.input_shape
         canales de retorno , self.size [0] * height, self.size [1] * width

El núcleo es la función numpy.repeat ().

Supongo que te gusta

Origin www.cnblogs.com/xiximayou/p/12720558.html
Recomendado
Clasificación