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 ().