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)