generator.py 779 B

123456789101112131415161718192021222324252627282930313233
  1. # Generate neural network
  2. from lab import neural
  3. import numpy as np
  4. # Random generators
  5. def uniform(layer):
  6. return np.random.uniform(low = -1.0, high = 1.0, size = layer.shape)
  7. def gaussUnitDev(layer):
  8. return np.random.normal(size = layer.shape)
  9. def gaussAdaptedDev(layer):
  10. nl, _ = layer.shape
  11. stdDev = 1 / np.sqrt(nl - 1)
  12. return np.random.normal(scale = stdDev, size = layer.shape)
  13. # Network weight initialization
  14. def generate(activation, derivative, weightGenerator = None):
  15. """
  16. Weight generator can be
  17. None
  18. generator.uniform
  19. generator.gaussUnitDev
  20. generator.gaussAdaptedDev
  21. """
  22. net = neural.Network(activation, derivative)
  23. if (weightGenerator is not None):
  24. net.layer1 = weightGenerator(net.layer1)
  25. net.layer2 = weightGenerator(net.layer2)
  26. return net