text: class Layer:
      def __init__(self, shape, activation='sigmoid'):
          ...
  
      def feedforward(self, x: np.ndarray) -> np.ndarray:
          ...
  
      def calc_delta(self, d: np.ndarray = None):
          ...
  
      def calc_gradient(self):
          ...
  
      def update_weights(self, learning_rate=.2):
          ...
  