Optimizando una red sin capa secuencial
import os
import sys
module_path = os.path.abspath(os.path.join('..'))
if module_path not in sys.path:
    sys.path.append(module_path)
from lightdlf_old.cpu.core import Tensor
from lightdlf_old.cpu.layers import Linear, Sequential
from lightdlf_old.cpu.optimizers import SGD
import numpy as np
np.random.seed(0)

data = Tensor([[0,0],[0,1],[1,0],[1,1]], autograd=True)
target = Tensor([[0],[1],[1],[1]], autograd=True)

model = list()
model.append(Linear(2,3))
model.append(Linear(3,1))

params = list()
for l in model:
    params += l.get_parameters()
    
optim = SGD(parameters=params, alpha=0.05)

for i in range(10):
    pred = data
    for layer in model:
        pred = layer.forward(input=pred)
        
    loss = ((pred - target) * (pred - target)).sum(0)
    
    loss.backward(grad=Tensor(np.ones_like(loss.data)))
    optim.step()
    print(loss)
[2.95160758]
[0.31551327]
[0.26353685]
[0.25414544]
[0.25227973]
[0.25162991]
[0.25124923]
[0.2509711]
[0.25075675]
[0.25058976]