import numpy as np
class Network(object):
def __init__(self, sizes):
"""The list ``sizes`` contains the number of neurons in the
respective layers of the network. For example, if the list
was [2, 3, 1] then it would be a three-layer network, with the
first layer containing 2 neurons, the second layer 3 neurons,
and the third layer 1 neuron. The biases and weights for the
network are initialized randomly, using a Gaussian
distribution with mean 0, and variance 1. Note that the first
layer is assumed to be an input layer, and by convention we
won't set any biases for those neurons, since biases are only
ever used in computing the outputs from later layers."""
self.num_layers = len(sizes)
self.sizes = sizes
self.biases = [np.random.randn(y, 1) for y in sizes[1:]]
self.weights = [np.random.randn(y, x)
for x, y in zip(sizes[:-1], sizes[1:])]
minharede = Network([2, 3, 1]);
Esse é um código de uma rede neural MLP que extrai do site: http://neuralnetworksanddeeplearning.com/chap1.html, ai eu copiei pra cá e adicionei a chamada de "minharede = Network([2, 3, 1]);" pra perguntar sobre esse exemplo que não entendi.
Eu tenho tentado entender a logica por traz desse código, mais acho bem dificil. Tenho bastante dificuldade com list compreension e com funções matriciais do numpy. Por isso gostaria de perguntar especificamente o que esse código faz e também se possivel, queria descobrir como eu poderia obter o mesmo resultado porém sem utilizar numpy e sem usar list compreension.
Tenho umas duvidas:
1 - O que faz a linha "self.biases = [np.random.randn(y, 1) for y in sizes[1:]]" ?
2 - O que faz a outra linha "self.weights = [np.random.randn(y, x) for x, y in zip(sizes[:-1], sizes[1:])]" ?
3 - Qual deverá ser a estrutura resultante de cada uma dessas duas linhas ?
4 - Qual seria um código equivalente para obter exatamente o mesmo resultado dessas duas linhas, porém sem precisar usar list compreension e sem o numpy. Do zero em python, apenas utilizando os comandos nativos do propio python?
Isso me ajudaria a entender melhor o código e o que essas linhas de códigos realmente fazem.