Spaces:
Running
Running
# Copyright 2017 Google, Inc. All Rights Reserved. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
# ============================================================================== | |
"""Groups of problems of different types for optimizer training.""" | |
from __future__ import absolute_import | |
from __future__ import division | |
from __future__ import print_function | |
import numpy as np | |
import tensorflow as tf | |
from learned_optimizer.problems import datasets | |
from learned_optimizer.problems import model_adapter | |
from learned_optimizer.problems import problem_generator as pg | |
from learned_optimizer.problems import problem_spec | |
_Spec = problem_spec.Spec | |
def quadratic_problems(): | |
return [ | |
(_Spec(pg.Quadratic, (20,), {}), None, None), | |
(_Spec(pg.Quadratic, (25,), {}), None, None), | |
(_Spec(pg.Quadratic, (50,), {}), None, None), | |
(_Spec(pg.Quadratic, (100,), {}), None, None), | |
] | |
# Note: this group contains one non-noisy problem for historical reasons. The | |
# original training set before the refactor included this set of quadratics. | |
def quadratic_problems_noisy(): | |
return [ | |
(_Spec(pg.Quadratic, (20,), {"noise_stdev": 0.5}), None, None), | |
(_Spec(pg.Quadratic, (25,), {"noise_stdev": 0.0}), None, None), | |
(_Spec(pg.Quadratic, (50,), {"noise_stdev": 1.0}), None, None), | |
(_Spec(pg.Quadratic, (100,), {"noise_stdev": 2.0}), None, None), | |
] | |
def quadratic_problems_large(): | |
return [ | |
(_Spec(pg.Quadratic, (784,), {}), None, None), | |
(_Spec(pg.Quadratic, (1024,), {}), None, None), | |
(_Spec(pg.Quadratic, (2048,), {}), None, None), | |
] | |
def bowl_problems(): | |
return [ | |
(_Spec(pg.Bowl, (0.1,), {"noise_stdev": 0.0}), None, None), | |
(_Spec(pg.Bowl, (1.0,), {"noise_stdev": 0.0}), None, None), | |
(_Spec(pg.Bowl, (5.0,), {"noise_stdev": 0.0}), None, None), | |
(_Spec(pg.Bowl, (5.0,), {"noise_stdev": 0.0, "angle": np.pi / 4.}), | |
None, None), | |
] | |
def bowl_problems_noisy(): | |
return [ | |
(_Spec(pg.Bowl, (0.1,), {"noise_stdev": 0.1}), None, None), | |
(_Spec(pg.Bowl, (1.0,), {"noise_stdev": 0.1}), None, None), | |
(_Spec(pg.Bowl, (5.0,), {"noise_stdev": 0.1}), None, None), | |
(_Spec(pg.Bowl, (5.0,), {"noise_stdev": 0.1, "angle": np.pi / 4.}), | |
None, None), | |
] | |
def sparse_softmax_2_class_sparse_problems(): | |
return [(_Spec(pg.SparseSoftmaxRegression, (5, 2), {"noise_stdev": 0.0}), | |
datasets.noisy_parity_class(5, random_seed=123), 23),] | |
def one_hot_sparse_softmax_2_class_sparse_problems(): | |
return [ | |
(_Spec(pg.OneHotSparseSoftmaxRegression, (5, 2), {"noise_stdev": 0.0}), | |
datasets.noisy_parity_class(5, random_seed=123), 23), | |
] | |
def softmax_2_class_problems(): | |
return [ | |
(_Spec(pg.SoftmaxRegression, (10, 2), {}), datasets.random( | |
10, 1000, random_seed=123, sep=2.0), 100), | |
(_Spec(pg.SoftmaxRegression, (100, 2), {}), datasets.random( | |
100, 1000, random_seed=123), 50), | |
(_Spec(pg.SoftmaxRegression, (200, 2), {}), datasets.random( | |
200, 1000, random_seed=123, sep=1.5), 20), | |
(_Spec(pg.SoftmaxRegression, (256, 2), {}), datasets.random( | |
256, 1000, random_seed=123, sep=1.5), 100), | |
] | |
def softmax_2_class_problems_noisy(): | |
return [ | |
(_Spec(pg.SoftmaxRegression, (10, 2), {"noise_stdev": 0.5}), | |
datasets.random(10, 1000, random_seed=123, sep=2.0), 100), | |
(_Spec(pg.SoftmaxRegression, (100, 2), {"noise_stdev": 0.1}), | |
datasets.random(100, 1000, random_seed=123), 50), | |
(_Spec(pg.SoftmaxRegression, (200, 2), {"noise_stdev": 0.1}), | |
datasets.random(200, 1000, random_seed=123, sep=1.5), 20), | |
(_Spec(pg.SoftmaxRegression, (256, 2), {"noise_stdev": 0.5}), | |
datasets.random(256, 1000, random_seed=123, sep=1.5), 100), | |
] | |
def optimization_test_problems(): | |
return [ | |
(_Spec(pg.Ackley, (), {}), None, None), | |
(_Spec(pg.Beale, (), {}), None, None), | |
(_Spec(pg.Booth, (), {}), None, None), | |
(_Spec(pg.Branin, (), {}), None, None), | |
(_Spec(pg.LogSumExp, (), {}), None, None), | |
(_Spec(pg.Matyas, (), {}), None, None), | |
(_Spec(pg.Michalewicz, (), {}), None, None), | |
(_Spec(pg.Rosenbrock, (), {}), None, None), | |
(_Spec(pg.StyblinskiTang, (), {}), None, None), | |
] | |
def optimization_test_problems_noisy(): | |
return [ | |
(_Spec(pg.Ackley, (), {"noise_stdev": 1.}), None, None), | |
(_Spec(pg.Beale, (), {"noise_stdev": 1.}), None, None), | |
(_Spec(pg.Booth, (), {"noise_stdev": 1.}), None, None), | |
(_Spec(pg.Branin, (), {"noise_stdev": 1.}), None, None), | |
(_Spec(pg.LogSumExp, (), {"noise_stdev": 1.}), None, None), | |
(_Spec(pg.Matyas, (), {"noise_stdev": 1.}), None, None), | |
(_Spec(pg.Michalewicz, (), {"noise_stdev": 1.}), None, None), | |
(_Spec(pg.Rosenbrock, (), {"noise_stdev": 1.}), None, None), | |
(_Spec(pg.StyblinskiTang, (), {"noise_stdev": 1.}), None, None), | |
] | |
def fully_connected_random_2_class_problems(): | |
return [ | |
(_Spec(pg.FullyConnected, (8, 2), | |
{"hidden_sizes": (8, 5,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(8, 1000), 10), | |
(_Spec(pg.FullyConnected, (12, 2), | |
{"hidden_sizes": (8, 5, 3), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(12, 1000), 200), | |
(_Spec(pg.FullyConnected, (5, 2), | |
{"hidden_sizes": (4, 4, 4, 4,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(5, 1000), 100), | |
(_Spec(pg.FullyConnected, (11, 2), | |
{"hidden_sizes": (4, 5, 6,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(11, 1000), 64), | |
(_Spec(pg.FullyConnected, (9, 2), | |
{"hidden_sizes": (8,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(9, 1000), 128), | |
(_Spec(pg.FullyConnected, (7, 2), | |
{"hidden_sizes": (8, 5,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(7, 1000), 16), | |
(_Spec(pg.FullyConnected, (8, 2), | |
{"hidden_sizes": (32, 64,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(8, 1000), 10), | |
(_Spec(pg.FullyConnected, (12, 2), | |
{"hidden_sizes": (16, 8, 3), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(12, 1000), 200), | |
(_Spec(pg.FullyConnected, (5, 2), | |
{"hidden_sizes": (8, 8, 8, 8,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(5, 1000), 100), | |
(_Spec(pg.FullyConnected, (11, 2), | |
{"hidden_sizes": (10, 12, 12,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(11, 1000), 64), | |
(_Spec(pg.FullyConnected, (9, 2), | |
{"hidden_sizes": (32,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(9, 1000), 128), | |
(_Spec(pg.FullyConnected, (7, 2), | |
{"hidden_sizes": (32, 64,), "activation": tf.nn.sigmoid}), | |
datasets.random_mlp(7, 1000), 16), | |
] | |
def matmul_problems(): | |
return sum([ | |
pg.matmul_problem_sequence(2, 5, 8), | |
pg.matmul_problem_sequence(3, 19, 24)], []) | |
def log_objective_problems(): | |
return [ | |
(_Spec(pg.LogObjective, [_Spec(pg.Quadratic, (20,), {})], {}), | |
None, None), | |
(_Spec(pg.LogObjective, [_Spec(pg.Quadratic, (50,), {})], {}), | |
None, None), | |
(_Spec(pg.LogObjective, [_Spec(pg.Quadratic, (100,), {})], {}), | |
None, None), | |
(_Spec(pg.LogObjective, [_Spec(pg.Bowl, (0.1,), {})], {}), None, None), | |
(_Spec(pg.LogObjective, [_Spec(pg.Bowl, (1.0,), {})], {}), None, None), | |
(_Spec(pg.LogObjective, [_Spec(pg.Bowl, (5.0,), {})], {}), None, None), | |
] | |
def sparse_gradient_problems(): | |
return [ | |
(_Spec(pg.SparseProblem, [_Spec(pg.Quadratic, (20,), {})], {}), | |
None, None), | |
(_Spec(pg.SparseProblem, [_Spec(pg.Quadratic, (50,), {})], {}), | |
None, None), | |
(_Spec(pg.SparseProblem, [_Spec(pg.Quadratic, (100,), {})], {}), | |
None, None), | |
(_Spec(pg.SparseProblem, [_Spec(pg.Bowl, (0.1,), {})], {}), None, None), | |
(_Spec(pg.SparseProblem, [_Spec(pg.Bowl, (1.0,), {})], {}), None, None), | |
(_Spec(pg.SparseProblem, [_Spec(pg.Bowl, (5.0,), {})], {}), None, None), | |
] | |
def sparse_gradient_problems_mlp(): | |
return [ | |
(_Spec(pg.SparseProblem, [ | |
_Spec(pg.FullyConnected, (8, 2), { | |
"hidden_sizes": (8, 5,), | |
"activation": tf.nn.sigmoid | |
}) | |
], {}), datasets.random_mlp(8, 1000), 10), | |
(_Spec(pg.SparseProblem, [ | |
_Spec(pg.FullyConnected, (12, 2), { | |
"hidden_sizes": (8, 5, 3), | |
"activation": tf.nn.sigmoid | |
}) | |
], {}), datasets.random_mlp(12, 1000), 200), | |
(_Spec(pg.SparseProblem, [ | |
_Spec(pg.FullyConnected, (5, 2), { | |
"hidden_sizes": (4, 4, 4, 4,), | |
"activation": tf.nn.sigmoid | |
}) | |
], {}), datasets.random_mlp(5, 1000), 100), | |
] | |
def rescale_problems(): | |
return [ | |
(_Spec(pg.Rescale, [_Spec(pg.Norm, (18,), {"norm_power": 2.5})], | |
{"scale": 0.123}), None, None), | |
(_Spec(pg.Rescale, [_Spec(pg.Norm, (18,), {"norm_power": 1.5})], | |
{"scale": 8}), None, None), | |
(_Spec(pg.Rescale, [_Spec(pg.Norm, (18,), {"norm_power": 2.})], | |
{"scale": 50}), None, None), | |
(_Spec(pg.Rescale, [_Spec(pg.Norm, (18,), {"norm_power": 3.})], | |
{"scale": 200}), None, None), | |
(_Spec(pg.Rescale, [_Spec(pg.Norm, (18,), {"norm_power": 1.})], | |
{"scale": 1000}), None, None), | |
(_Spec(pg.Rescale, [_Spec(pg.Quadratic, (20,), {})], {"scale": 0.1}), | |
None, None), | |
(_Spec(pg.Rescale, [_Spec(pg.Quadratic, (25,), {})], {"scale": 10.}), | |
None, None), | |
(_Spec(pg.Rescale, [_Spec(pg.Quadratic, (50,), {})], {"scale": 350.}), | |
None, None), | |
(_Spec(pg.Rescale, [_Spec(pg.Quadratic, (100,), {})], {"scale": 132}), | |
None, None), | |
] | |
def norm_problems(): | |
return [ | |
# < 1 Norm causes NaN gradients early in training. | |
(_Spec(pg.Norm, (27,), {"norm_power": 1.}), None, None), | |
(_Spec(pg.Norm, (25,), {"norm_power": 2.}), None, None), | |
(_Spec(pg.Norm, (22,), {"norm_power": 3.}), None, None), | |
] | |
def norm_problems_noisy(): | |
return [ | |
# < 1 Norm causes NaN gradients early in training. | |
(_Spec(pg.Norm, (19,), {"noise_stdev": .1, "norm_power": 1.}), | |
None, None), | |
(_Spec(pg.Norm, (26,), {"noise_stdev": .1, "norm_power": 2.}), | |
None, None), | |
(_Spec(pg.Norm, (23,), {"noise_stdev": .1, "norm_power": 3.}), | |
None, None), | |
] | |
def sum_problems(): | |
return [ | |
(_Spec(pg.SumTask, [[ | |
_Spec(pg.Quadratic, (11,), {}), | |
_Spec(pg.Quadratic, (3,), {}), | |
_Spec(pg.Quadratic, (9,), {}), | |
_Spec(pg.Quadratic, (7,), {}), | |
_Spec(pg.Quadratic, (5,), {}), | |
_Spec(pg.Quadratic, (13,), {}), | |
_Spec(pg.Quadratic, (12,), {}) | |
]], {}), None, None), | |
(_Spec(pg.SumTask, [[ | |
_Spec(pg.Norm, (18,), {"norm_power": 3}), | |
_Spec(pg.Quadratic, (25,), {}), | |
_Spec(pg.Rosenbrock, (), {}) | |
]], {}), None, None), | |
(_Spec(pg.SumTask, [[ | |
_Spec(pg.Rosenbrock, (), {}), | |
_Spec(pg.LogSumExp, (), {}), | |
_Spec(pg.Ackley, (), {}), | |
_Spec(pg.Beale, (), {}), | |
_Spec(pg.Booth, (), {}), | |
_Spec(pg.StyblinskiTang, (), {}), | |
_Spec(pg.Matyas, (), {}), | |
_Spec(pg.Branin, (), {}), | |
_Spec(pg.Michalewicz, (), {}) | |
]], {}), None, None), | |
(_Spec(pg.SumTask, [[ | |
_Spec(pg.Rosenbrock, (), {}), | |
_Spec(pg.LogSumExp, (), {}), | |
_Spec(pg.Ackley, (), {}), | |
_Spec(pg.Beale, (), {}), | |
_Spec(pg.Booth, (), {}), | |
_Spec(pg.StyblinskiTang, (), {}), | |
_Spec(pg.Matyas, (), {}), | |
_Spec(pg.Branin, (), {}), | |
_Spec(pg.Michalewicz, (), {}), | |
_Spec(pg.Quadratic, (5,), {}), | |
_Spec(pg.Quadratic, (13,), {}) | |
]], {}), None, None), | |
(_Spec(pg.SumTask, [[ | |
_Spec(pg.Quadratic, (11,), {}), | |
_Spec(pg.Quadratic, (3,), {}) | |
]], {}), None, None), | |
(_Spec(pg.SumTask, [[ | |
_Spec(pg.Rosenbrock, (), {}), | |
_Spec(pg.LogSumExp, (), {}), | |
_Spec(pg.Ackley, (), {}) | |
]], {}), None, None), | |
] | |
def sum_problems_noisy(): | |
return [ | |
(_Spec(pg.SumTask, [[ | |
_Spec(pg.Quadratic, (11,), {"noise_stdev": 0.1}), | |
_Spec(pg.Quadratic, (3,), {"noise_stdev": 0.1}), | |
_Spec(pg.Quadratic, (9,), {"noise_stdev": 0.1}), | |
_Spec(pg.Quadratic, (7,), {"noise_stdev": 0.1}), | |
_Spec(pg.Quadratic, (5,), {"noise_stdev": 0.1}), | |
_Spec(pg.Quadratic, (13,), {"noise_stdev": 0.1}), | |
_Spec(pg.Quadratic, (12,), {"noise_stdev": 0.1}) | |
]], {}), None, None), | |
(_Spec(pg.SumTask, [[ | |
_Spec(pg.Rosenbrock, (), {}), | |
_Spec(pg.LogSumExp, (), {}), | |
_Spec(pg.Ackley, (), {}), | |
_Spec(pg.Beale, (), {}), | |
_Spec(pg.Booth, (), {}), | |
_Spec(pg.StyblinskiTang, (), {}), | |
_Spec(pg.Matyas, (), {}), | |
_Spec(pg.Branin, (), {}), | |
_Spec(pg.Michalewicz, (), {}), | |
_Spec(pg.Quadratic, (5,), {}), | |
_Spec(pg.Quadratic, (13,), {"noise_stdev": 0.5}) | |
]], {}), None, None), | |
] | |
def dependency_chain_problems(): | |
return [ | |
(_Spec(pg.DependencyChain, (20,), {}), datasets.random_binary( | |
20, 1000), 100), | |
(_Spec(pg.DependencyChain, (12,), {}), datasets.random_binary( | |
12, 200), 10), | |
(_Spec(pg.DependencyChain, (56,), {}), datasets.random_binary( | |
56, 5000), 100), | |
(_Spec(pg.DependencyChain, (64,), {}), datasets.random_binary( | |
64, 1000), 50), | |
(_Spec(pg.DependencyChain, (13,), {}), datasets.random_binary( | |
13, 10000), 50), | |
(_Spec(pg.DependencyChain, (20,), {}), datasets.random_binary( | |
20, 1000), 128), | |
(_Spec(pg.DependencyChain, (12,), {}), datasets.random_binary( | |
12, 300), 16), | |
(_Spec(pg.DependencyChain, (56,), {}), datasets.random_binary( | |
56, 5000), 128), | |
(_Spec(pg.DependencyChain, (64,), {}), datasets.random_binary( | |
64, 1000), 64), | |
(_Spec(pg.DependencyChain, (13,), {}), datasets.random_binary( | |
13, 10000), 32), | |
] | |
def outward_snake_problems(): | |
return [ | |
(_Spec(pg.OutwardSnake, (20,), {}), datasets.random_binary( | |
20, 1000), 100), | |
(_Spec(pg.OutwardSnake, (12,), {}), datasets.random_binary( | |
12, 200), 10), | |
(_Spec(pg.OutwardSnake, (56,), {}), datasets.random_binary( | |
56, 5000), 100), | |
(_Spec(pg.OutwardSnake, (64,), {}), datasets.random_binary( | |
64, 1000), 50), | |
(_Spec(pg.OutwardSnake, (13,), {}), datasets.random_binary( | |
13, 10000), 50), | |
(_Spec(pg.OutwardSnake, (20,), {}), datasets.random_binary( | |
20, 1000), 128), | |
(_Spec(pg.OutwardSnake, (12,), {}), datasets.random_binary( | |
12, 300), 16), | |
(_Spec(pg.OutwardSnake, (56,), {}), datasets.random_binary( | |
56, 5000), 128), | |
(_Spec(pg.OutwardSnake, (64,), {}), datasets.random_binary( | |
64, 1000), 64), | |
(_Spec(pg.OutwardSnake, (13,), {}), datasets.random_binary( | |
13, 10000), 32), | |
] | |
def min_max_well_problems(): | |
return [ | |
(_Spec(pg.MinMaxWell, (20,), {}), None, None), | |
(_Spec(pg.MinMaxWell, (12,), {}), None, None), | |
(_Spec(pg.MinMaxWell, (56,), {}), None, None), | |
(_Spec(pg.MinMaxWell, (64,), {}), None, None), | |
(_Spec(pg.MinMaxWell, (13,), {}), None, None), | |
] | |
def sum_of_quadratics_problems(): | |
return [ | |
(_Spec(pg.SumOfQuadratics, (20,), {}), | |
datasets.random_symmetric(20, 1000), 100), | |
(_Spec(pg.SumOfQuadratics, (12,), {}), | |
datasets.random_symmetric(12, 100), 10), | |
(_Spec(pg.SumOfQuadratics, (56,), {}), | |
datasets.random_symmetric(56, 5000), 100), | |
(_Spec(pg.SumOfQuadratics, (64,), {}), | |
datasets.random_symmetric(64, 1000), 50), | |
(_Spec(pg.SumOfQuadratics, (13,), {}), | |
datasets.random_symmetric(13, 10000), 50), | |
(_Spec(pg.SumOfQuadratics, (20,), {}), | |
datasets.random_symmetric(20, 1000), 128), | |
(_Spec(pg.SumOfQuadratics, (12,), {}), | |
datasets.random_symmetric(12, 100), 16), | |
(_Spec(pg.SumOfQuadratics, (56,), {}), | |
datasets.random_symmetric(56, 5000), 128), | |
(_Spec(pg.SumOfQuadratics, (64,), {}), | |
datasets.random_symmetric(64, 1000), 64), | |
(_Spec(pg.SumOfQuadratics, (13,), {}), | |
datasets.random_symmetric(13, 10000), 32), | |
] | |
def projection_quadratic_problems(): | |
return [ | |
(_Spec(pg.ProjectionQuadratic, (20,), {}), | |
datasets.random_symmetric(20, 1000), 100), | |
(_Spec(pg.ProjectionQuadratic, (12,), {}), | |
datasets.random_symmetric(12, 100), 10), | |
(_Spec(pg.ProjectionQuadratic, (56,), {}), | |
datasets.random_symmetric(56, 5000), 100), | |
(_Spec(pg.ProjectionQuadratic, (64,), {}), | |
datasets.random_symmetric(64, 1000), 50), | |
(_Spec(pg.ProjectionQuadratic, (13,), {}), | |
datasets.random_symmetric(13, 10000), 50), | |
(_Spec(pg.ProjectionQuadratic, (20,), {}), | |
datasets.random_symmetric(20, 1000), 128), | |
(_Spec(pg.ProjectionQuadratic, (12,), {}), | |
datasets.random_symmetric(12, 100), 16), | |
(_Spec(pg.ProjectionQuadratic, (56,), {}), | |
datasets.random_symmetric(56, 5000), 128), | |
(_Spec(pg.ProjectionQuadratic, (64,), {}), | |
datasets.random_symmetric(64, 1000), 64), | |
(_Spec(pg.ProjectionQuadratic, (13,), {}), | |
datasets.random_symmetric(13, 10000), 32), | |
] | |
def adapter_rosenbrock_local(): | |
return [(_Spec(model_adapter.ModelAdapter, | |
(pg.make_rosenbrock_loss_and_init,), {}), None, None),] | |
def adapter_rosenbrock_worker(): | |
return [(_Spec(model_adapter.ModelAdapter, | |
(pg.make_rosenbrock_loss_and_init,), | |
{"device": "/job:worker"}), None, None),] | |
def _test_problem_mlp_scaled_init_small(): | |
return [ | |
np.random.randn(10, 32) * np.sqrt(2./10), | |
np.random.randn(32,) * 0.1, | |
np.random.randn(32, 64) * np.sqrt(2./32.), | |
np.random.randn(64,) * 0.1, | |
np.random.randn(64, 2) * np.sqrt(2./64.), | |
np.random.randn(2,) * 0.1 | |
] | |
def _test_problem_mlp_scaled_init_large(): | |
return [ | |
np.random.randn(20, 32) * np.sqrt(2./20), | |
np.random.randn(32,) * 0.1, | |
np.random.randn(32, 64) * np.sqrt(2./32.), | |
np.random.randn(64,) * 0.1, | |
np.random.randn(64, 10) * np.sqrt(2./64.), | |
np.random.randn(10,) * 0.1 | |
] | |
def _test_problem_mlp_scaled_init_mnist(): | |
return [ | |
np.random.randn(784, 64) * np.sqrt(2./784.), | |
np.random.randn(64,) * 0.1, | |
np.random.randn(64, 10) * np.sqrt(2./ 64.), | |
np.random.randn(10,) * 0.1, | |
] | |
# Wrap this construction in a function to avoid UnparsedFlagAccessError | |
def test_problems(): | |
"""Test problems for visualizations.""" | |
# Unlike the training problem sets, these test problems are made up of | |
# length-5 tuples. The final items in the tuple are the name of the problem | |
# and the initialization random_seed for testing consistency. | |
tp = [ | |
(_Spec(pg.Quadratic, (20,), {"random_seed": 1234}), None, None, | |
"quad_problem", 5678), | |
(_Spec(pg.Quadratic, (20,), {"noise_stdev": 1.0, "random_seed": 1234}), | |
None, None, "quad_problem_noise", 5678), | |
(_Spec(pg.Rosenbrock, (), {"random_seed": 1234}), None, None, | |
"rosenbrock", 5678), | |
(_Spec(pg.Rosenbrock, (), {"random_seed": 1234, "noise_stdev": 1.0}), | |
None, None, "rosenbrock_noise", 5678), | |
(_Spec(pg.SoftmaxRegression, (10, 2), {}), datasets.random( | |
10, 10000, random_seed=1234), 100, "softmax", 5678), | |
(_Spec(pg.SoftmaxRegression, (10, 2), {"noise_stdev": 1.0}), | |
datasets.random(10, 10000, random_seed=1234), 100, "softmax_noise", | |
5678), | |
(_Spec(pg.FullyConnected, (10, 2), {}), datasets.random( | |
10, 10000, random_seed=1234), 100, "mlp_small", | |
_test_problem_mlp_scaled_init_small()), | |
(_Spec(pg.FullyConnected, (20, 10), {}), datasets.random( | |
20, 10000, n_classes=10, random_seed=1234), 100, "mlp_large", | |
_test_problem_mlp_scaled_init_large()), | |
(_Spec(pg.FullyConnected, (784, 10), | |
{"hidden_sizes": (64,), "activation": tf.nn.sigmoid}), | |
datasets.mnist(), 64, "mlp_mnist_sigmoid", | |
_test_problem_mlp_scaled_init_mnist()), | |
(_Spec(pg.FullyConnected, (784, 10), | |
{"hidden_sizes": (64,), "activation": tf.nn.relu}), | |
datasets.mnist(), 64, "mlp_mnist_relu", | |
_test_problem_mlp_scaled_init_mnist()), | |
(_Spec(pg.ConvNet, ((1, 28, 28), 10, [(3, 3, 8), (5, 5, 8)]), | |
{"activation": tf.nn.sigmoid}), datasets.mnist(), 64, | |
"convnet_mnist_sigmoid", None), | |
(_Spec(pg.ConvNet, ((1, 28, 28), 10, [(3, 3, 8), (5, 5, 8)]), | |
{"activation": tf.nn.relu}), datasets.mnist(), 64, | |
"convnet_mnist_relu", None), | |
] | |
return tp | |