mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
import json
|
|
import torch
|
|
import torch.legacy.optim as optim
|
|
from pprint import pprint
|
|
|
|
|
|
def rosenbrock(tensor):
|
|
x, y = tensor
|
|
return (1 - x) ** 2 + 100 * (y - x ** 2) ** 2
|
|
|
|
|
|
def drosenbrock(tensor):
|
|
x, y = tensor
|
|
return torch.DoubleTensor((-400 * x * (y - x ** 2) - 2 * (1 - x), 200 * (y - x ** 2)))
|
|
|
|
algorithms = {
|
|
'adadelta': optim.adadelta,
|
|
'adagrad': optim.adagrad,
|
|
'adam': optim.adam,
|
|
'adamax': optim.adamax,
|
|
'asgd': optim.asgd,
|
|
'cg': optim.cg,
|
|
'nag': optim.nag,
|
|
'rmsprop': optim.rmsprop,
|
|
'rprop': optim.rprop,
|
|
'sgd': optim.sgd,
|
|
'lbfgs': optim.lbfgs,
|
|
}
|
|
|
|
with open('tests.json', 'r') as f:
|
|
tests = json.loads(f.read())
|
|
|
|
for test in tests:
|
|
print(test['algorithm'] + '\t')
|
|
algorithm = algorithms[test['algorithm']]
|
|
for config in test['config']:
|
|
print('================================================================================\t')
|
|
params = torch.DoubleTensor((1.5, 1.5))
|
|
for i in range(100):
|
|
algorithm(lambda x: (rosenbrock(x), drosenbrock(x)), params, config)
|
|
print('{:.8f}\t{:.8f}\t'.format(params[0], params[1]))
|