Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions test/test_optim.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,8 @@ def test_sgd(self):
self._build_params_dict_single(weight, bias, lr=1e-2),
lr=1e-3)
)
with self.assertRaisesRegex(ValueError, "Invalid momentum value: -0.5"):
optim.SGD(None, lr=1e-2, momentum=-0.5)

def test_sgd_sparse(self):
self._test_rosenbrock_sparse(
Expand Down Expand Up @@ -300,6 +302,8 @@ def test_sparse_adam(self):
lambda params: optim.SparseAdam(params, lr=4e-2),
True
)
with self.assertRaisesRegex(ValueError, "Invalid beta parameter at index 0: 1.0"):
optim.SparseAdam(None, lr=1e-2, betas=(1.0, 0.0))

def test_adadelta(self):
self._test_rosenbrock(
Expand All @@ -321,6 +325,8 @@ def test_adadelta(self):
lambda weight, bias: optim.Adadelta(
self._build_params_dict(weight, bias, rho=0.95))
)
with self.assertRaisesRegex(ValueError, "Invalid rho value: 1.1"):
optim.Adadelta(None, lr=1e-2, rho=1.1)

def test_adagrad(self):
self._test_rosenbrock(
Expand All @@ -343,6 +349,8 @@ def test_adagrad(self):
self._build_params_dict(weight, bias, lr=1e-2),
lr=1e-1)
)
with self.assertRaisesRegex(ValueError, "Invalid lr_decay value: -0.5"):
optim.Adagrad(None, lr=1e-2, lr_decay=-0.5)

def test_adagrad_sparse(self):
self._test_rosenbrock_sparse(

This comment was marked as off-topic.

This comment was marked as off-topic.

This comment was marked as off-topic.

Expand Down Expand Up @@ -370,6 +378,8 @@ def test_adamax(self):
self._build_params_dict(weight, bias, lr=1e-2),
lr=1e-1)
)
with self.assertRaisesRegex(ValueError, "Invalid beta parameter at index 1: 1.0"):
optim.Adamax(None, lr=1e-2, betas=(0.0, 1.0))

def test_rmsprop(self):
self._test_rosenbrock(
Expand All @@ -392,6 +402,8 @@ def test_rmsprop(self):
self._build_params_dict(weight, bias, lr=1e-3),
lr=1e-2)
)
with self.assertRaisesRegex(ValueError, "Invalid momentum value: -1.0"):
optim.RMSprop(None, lr=1e-2, momentum=-1.0)

def test_asgd(self):
self._test_rosenbrock(
Expand All @@ -414,6 +426,8 @@ def test_asgd(self):
self._build_params_dict(weight, bias, lr=1e-2),
lr=1e-3, t0=100)
)
with self.assertRaisesRegex(ValueError, "Invalid weight_decay value: -0.5"):
optim.ASGD(None, lr=1e-2, weight_decay=-0.5)

def test_rprop(self):
self._test_rosenbrock(
Expand All @@ -436,6 +450,8 @@ def test_rprop(self):
self._build_params_dict(weight, bias, lr=1e-2),
lr=1e-3)
)
with self.assertRaisesRegex(ValueError, "Invalid eta values: 1.0, 0.5"):
optim.Rprop(None, lr=1e-2, etas=(1.0, 0.5))

def test_lbfgs(self):
self._test_rosenbrock(
Expand Down
9 changes: 9 additions & 0 deletions torch/optim/adadelta.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,15 @@ class Adadelta(Optimizer):
"""

def __init__(self, params, lr=1.0, rho=0.9, eps=1e-6, weight_decay=0):
if not 0.0 <= lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 <= rho <= 1.0:
raise ValueError("Invalid rho value: {}".format(rho))
if not 0.0 <= eps:
raise ValueError("Invalid epsilon value: {}".format(eps))
if not 0.0 <= weight_decay:
raise ValueError("Invalid weight_decay value: {}".format(weight_decay))

defaults = dict(lr=lr, rho=rho, eps=eps, weight_decay=weight_decay)
super(Adadelta, self).__init__(params, defaults)

Expand Down
7 changes: 7 additions & 0 deletions torch/optim/adagrad.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@ class Adagrad(Optimizer):
"""

def __init__(self, params, lr=1e-2, lr_decay=0, weight_decay=0):
if not 0.0 <= lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 <= lr_decay:
raise ValueError("Invalid lr_decay value: {}".format(lr_decay))
if not 0.0 <= weight_decay:
raise ValueError("Invalid weight_decay value: {}".format(weight_decay))

defaults = dict(lr=lr, lr_decay=lr_decay, weight_decay=weight_decay)
super(Adagrad, self).__init__(params, defaults)

Expand Down
4 changes: 4 additions & 0 deletions torch/optim/adam.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ class Adam(Optimizer):

def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,
weight_decay=0, amsgrad=False):
if not 0.0 <= lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 <= eps:
raise ValueError("Invalid epsilon value: {}".format(eps))
if not 0.0 <= betas[0] < 1.0:
raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0]))
if not 0.0 <= betas[1] < 1.0:
Expand Down
11 changes: 11 additions & 0 deletions torch/optim/adamax.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,17 @@ class Adamax(Optimizer):

def __init__(self, params, lr=2e-3, betas=(0.9, 0.999), eps=1e-8,
weight_decay=0):
if not 0.0 <= lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 <= eps:
raise ValueError("Invalid epsilon value: {}".format(eps))
if not 0.0 <= betas[0] < 1.0:
raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0]))
if not 0.0 <= betas[1] < 1.0:
raise ValueError("Invalid beta parameter at index 1: {}".format(betas[1]))
if not 0.0 <= weight_decay:
raise ValueError("Invalid weight_decay value: {}".format(weight_decay))

defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay)
super(Adamax, self).__init__(params, defaults)

Expand Down
5 changes: 5 additions & 0 deletions torch/optim/asgd.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ class ASGD(Optimizer):
"""

def __init__(self, params, lr=1e-2, lambd=1e-4, alpha=0.75, t0=1e6, weight_decay=0):
if not 0.0 <= lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 <= weight_decay:
raise ValueError("Invalid weight_decay value: {}".format(weight_decay))

defaults = dict(lr=lr, lambd=lambd, alpha=alpha, t0=t0,
weight_decay=weight_decay)
super(ASGD, self).__init__(params, defaults)
Expand Down
11 changes: 11 additions & 0 deletions torch/optim/rmsprop.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,17 @@ class RMSprop(Optimizer):
"""

def __init__(self, params, lr=1e-2, alpha=0.99, eps=1e-8, weight_decay=0, momentum=0, centered=False):
if not 0.0 <= lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 <= eps:
raise ValueError("Invalid epsilon value: {}".format(eps))
if not 0.0 <= momentum:
raise ValueError("Invalid momentum value: {}".format(momentum))
if not 0.0 <= weight_decay:
raise ValueError("Invalid weight_decay value: {}".format(weight_decay))
if not 0.0 <= alpha:
raise ValueError("Invalid alpha value: {}".format(alpha))

defaults = dict(lr=lr, momentum=momentum, alpha=alpha, eps=eps, centered=centered, weight_decay=weight_decay)
super(RMSprop, self).__init__(params, defaults)

Expand Down
5 changes: 5 additions & 0 deletions torch/optim/rprop.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ class Rprop(Optimizer):
"""

def __init__(self, params, lr=1e-2, etas=(0.5, 1.2), step_sizes=(1e-6, 50)):
if not 0.0 <= lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 < etas[0] < 1.0 < etas[1]:
raise ValueError("Invalid eta values: {}, {}".format(etas[0], etas[1]))

defaults = dict(lr=lr, etas=etas, step_sizes=step_sizes)
super(Rprop, self).__init__(params, defaults)

Expand Down
7 changes: 7 additions & 0 deletions torch/optim/sgd.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ class SGD(Optimizer):

def __init__(self, params, lr=required, momentum=0, dampening=0,
weight_decay=0, nesterov=False):
if not 0.0 <= lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 <= momentum:
raise ValueError("Invalid momentum value: {}".format(momentum))
if not 0.0 <= weight_decay:
raise ValueError("Invalid weight_decay value: {}".format(weight_decay))

defaults = dict(lr=lr, momentum=momentum, dampening=dampening,
weight_decay=weight_decay, nesterov=nesterov)
if nesterov and (momentum <= 0 or dampening != 0):
Expand Down
8 changes: 8 additions & 0 deletions torch/optim/sparse_adam.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ class SparseAdam(Optimizer):
"""

def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8):
if not 0.0 < lr:
raise ValueError("Invalid learning rate: {}".format(lr))
if not 0.0 < eps:
raise ValueError("Invalid epsilon value: {}".format(eps))
if not 0.0 <= betas[0] < 1.0:
raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0]))
if not 0.0 <= betas[1] < 1.0:
raise ValueError("Invalid beta parameter at index 1: {}".format(betas[1]))
defaults = dict(lr=lr, betas=betas, eps=eps)
super(SparseAdam, self).__init__(params, defaults)

Expand Down