code: def feed(self, weights, data):
          
          assert len(data) == self.layers[0].size
          self.layers[0].apply(data)
          # Propagate trough the remaining layers.
          connections = zip(self.layers[:-1], weights, self.layers[1:])
          for previous, weight, current in connections:
              incoming = self.forward(weight, previous.outgoing)
              current.apply(incoming)
          # Return the activations of the output layer.
          return self.layers[-1].outgoing
docs: Evaluate the network with alternative weights on the input data and
          return the output activation.