update optimizers

This commit is contained in:
Brian Delhaisse
2019-03-29 16:16:39 +01:00
parent c14a68331b
commit 4e360d5df3
3 changed files with 53 additions and 18 deletions
+26 -2
View File
@@ -1,3 +1,27 @@
# import optimizers
from optimizer import *
# import optimizer
from optimizer import Optimizer
# import scipy optimizer
# from scipy_optimizer import Scipy
# import nlopt optimizer
# from nlopt_optimizer import NLopt
# import ipopt optimizer
# from ipopt_optimizer import IPopt
# import QP solvers
# from qpsolvers_optimizer import QP
# import CMA-ES optimizer
# from cma_optimizer import CMAES
# import Bayesian Optimizer
# from gpyopt_optimizer import BayesianOptimizer
# import torch optimizers
from torch_optimizer import *
# import Contact-Invariant Optimizer
# from cio import CIO
+11 -5
View File
@@ -1,6 +1,12 @@
# This file implements the 'Contact Invariant Optimization' framework developed by Igor Mordatch.
# Ref: "Automated Discovery and Learning of Complex Movement Behaviors" (PhD thesis), Mordatch, 2015
# See also: presentation given CS294
#!/usr/bin/env python
"""This file implements the 'Contact Invariant Optimization' framework developed by Igor Mordatch.
References:
[1] "Automated Discovery and Learning of Complex Movement Behaviors" (PhD thesis), Mordatch, 2015
[2] Mordatch's presentation given in CS294
"""
# TODO: this is not an optimizer, but more an optimization process. It should be in another directory, maybe in
# `trajectory_optimization`??
import numpy as np
from scipy.interpolate as interp1d
@@ -56,8 +62,8 @@ class CIO(object):
return self.phase(t)
def compute_state(self):
base_pos = self.robot.getBasePosition()
base_quat = self.robot.getBaseOrientation()
base_pos = self.robot.get_base_position()
base_quat = self.robot.get_base_orientation()
end_effector_pos = self.robot.getEndEffectorPositions()
end_effector_quat = self.robot.getEndEffectorOrientations()
+16 -11
View File
@@ -39,7 +39,7 @@ __status__ = "Development"
# pass
class Adam(object):
class Adam(Optimizer):
r"""Adam Optimizer
References:
@@ -47,7 +47,8 @@ class Adam(object):
"""
def __init__(self, learning_rate=1e-3, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False,
max_grad_norm=None): # 0.5
max_grad_norm=None, *args, **kwargs): # 0.5
super(Adam, self).__init__(*args, **kwargs)
self.optimizer = None
self.learning_rate = learning_rate
self.betas = betas
@@ -73,14 +74,15 @@ class Adam(object):
self.optimizer.step()
class Adadelta(object):
class Adadelta(Optimizer):
r"""Adadelta Optimizer
References:
[1] "ADADELTA: An Adaptive Learning Rate Method", Zeiler, 2012
"""
def __init__(self, learning_rate=1., rho=0.9, eps=1e-6, weight_decay=0, max_grad_norm=None): #0.5
def __init__(self, learning_rate=1., rho=0.9, eps=1e-6, weight_decay=0, max_grad_norm=None, *args, **kwargs): # 0.5
super(Adadelta, self).__init__(*args, **kwargs)
self.optimizer = None
self.learning_rate = learning_rate
self.rho = rho
@@ -101,7 +103,7 @@ class Adadelta(object):
self.optimizer.step()
class Adagrad(object):
class Adagrad(Optimizer):
r"""Adagrad Optimizer
References:
@@ -109,7 +111,8 @@ class Adagrad(object):
"""
def __init__(self, learning_rate=0.01, learning_rate_decay=0, weight_decay=0, initial_accumumaltor_value=0,
max_grad_norm=None): # 0.5
max_grad_norm=None, *args, **kwargs): # 0.5
super(Adagrad, self).__init__(*args, **kwargs)
self.optimizer = None
self.learning_rate = learning_rate
self.learning_rate_decay = learning_rate_decay
@@ -131,7 +134,7 @@ class Adagrad(object):
self.optimizer.step()
class RMSprop(object):
class RMSprop(Optimizer):
r"""RMSprop
References:
@@ -141,7 +144,8 @@ class RMSprop(object):
"""
def __init__(self, learning_rate=1e-2, alpha=0.99, eps=1e-8, weight_decay=0, momentum=0, centered=False,
max_grad_norm=None): # 0.5
max_grad_norm=None, *args, **kwargs): # 0.5
super(RMSprop, self).__init__(*args, **kwargs)
self.optimizer = None
self.learning_rate = learning_rate
self.alpha = alpha
@@ -165,7 +169,7 @@ class RMSprop(object):
self.optimizer.step()
class SGD(object):
class SGD(Optimizer):
r"""Stochastic Gradient Descent
References:
@@ -173,8 +177,9 @@ class SGD(object):
[2] "On the importance of initialization and momentum in deep learning", Sutskever et al., 2013
"""
def __init__(self, learning_rate=1e-3, momentum=0, dampening=0, weight_decay=0, nesterov=False,
max_grad_norm=None): #0.5
def __init__(self, learning_rate=1e-3, momentum=0, dampening=0, weight_decay=0, nesterov=False, max_grad_norm=None,
*args, **kwargs): # 0.5
super(SGD, self).__init__(*args, **kwargs)
self.optimizer = None
self.learning_rate = learning_rate
self.momentum = momentum