def batch(X, Y, module, loss=ls.MSE(), epsilon=0.005, max_iter=100):
    cout = []
    for i in range(max_iter):
        module.zero_grad()
        ypred = module.forward(X)
        delta = loss.backward(Y, ypred)

        module.backward_update_gradient(X, delta)
        module.update_parameters(epsilon=epsilon)

        cout.append(loss.forward(Y, ypred))
    return cout
def stochastique(X, Y, module, loss=ls.MSE(), epsilon=0.0001, max_iter=100):
    cout = []
    for i in range(max_iter):
        inds = list(range(len(X)))
        np.random.shuffle(inds)
        for x, y in zip(X[inds], Y[inds]):
            x, y = x.reshape(1, -1), y.reshape(1, -1)

            module.zero_grad()
            ypred = module.forward(x)
            delta = loss.backward(y, ypred)

            module.backward_update_gradient(x, delta)
            module.update_parameters(epsilon=epsilon)

            cout.append(loss.forward(y, ypred))
    return cout
def mini_batch(X, Y, module, loss=ls.MSE(), n=50, epsilon=0.05, max_iter=100):
    cout = []
    for i in range(max_iter):
        inds = list(range(len(X)))[:n]
        np.random.shuffle(inds)

        module.zero_grad()

        ypred = module.forward(X[inds])
        delta = loss.backward(Y[inds], ypred)

        module.backward_update_gradient(X[inds], delta)
        module.update_parameters(epsilon=epsilon)

        cout.append(loss.forward(Y[inds], ypred))

    return cout
示例#4
0
    os.mkdir(args.checkpoint_dir)
except:
    pass

optimizer = None
criterion = None
p = Path(args.checkpoint_dir)

model = FFN(args.input_size)
if args.model_name:
    model = preprocessors.load_from_state_dict(model, p / args.model_name)

if args.train:
    print(f'Running model in train mode for {args.n_epochs} epochs...')
    optimizer = torch.optim.Adam(model.parameters(), lr=args.lr)
    criterion = losses.MSE()
    loaders = preprocessors.make_dataloaders(args.data_dir,
                                             data_ext='.npy',
                                             batch_size=args.batch_size)

if args.evaluate and not args.train:
    print('Running model evaluation...')
    loaders = {
        'test':
        preprocessors.make_dataloader(data_dir=args.data_dir,
                                      data_file=args.eval_data,
                                      is_train=False,
                                      batch_size=args.batch_size)
    }

cr = CustomRunner(model=model,