<s> from __future__ import division , print_function , unicode_literals <EOL> import pytest <EOL> import six <EOL> from brainstorm . training . schedules import Exponential , Linear , MultiStep <EOL> def test_linear ( ) : <EOL> sch = Linear ( initial_value = <NUM_LIT:1.0> , final_value = <NUM_LIT:0.5> , num_changes = <NUM_LIT:5> ) <EOL> epochs = [ <NUM_LIT:0> ] * <NUM_LIT:2> + [ <NUM_LIT:1> ] * <NUM_LIT:2> + [ <NUM_LIT:2> ] * <NUM_LIT:2> + [ <NUM_LIT:3> ] * <NUM_LIT:2> + [ <NUM_LIT:4> ] * <NUM_LIT:2> <EOL> updates = range ( <NUM_LIT:10> ) <EOL> values = [ sch ( epoch , update , '<STR_LIT>' , <NUM_LIT:1> , None , None , None ) <EOL> for epoch , update in six . moves . zip ( epochs , updates ) ] <EOL> assert values == [ <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] <EOL> values = [ sch ( epoch , update , '<STR_LIT>' , <NUM_LIT:1> , None , None , None ) <EOL> for epoch , update in six . moves . zip ( epochs , updates ) ] <EOL> assert values == [ <NUM_LIT:1.0> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:0.5> , <NUM_LIT:0.5> , <NUM_LIT:0.5> , <NUM_LIT:0.5> , <NUM_LIT:0.5> ] <EOL> values = [ sch ( epoch , update , '<STR_LIT>' , <NUM_LIT:3> , None , None , None ) <EOL> for epoch , update in six . moves . zip ( epochs , updates ) ] <EOL> assert values == [ <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] <EOL> def test_exponential ( ) : <EOL> sch = Exponential ( initial_value = <NUM_LIT:1.0> , factor = <NUM_LIT> , minimum = <NUM_LIT> ) <EOL> epochs = [ <NUM_LIT:0> ] * <NUM_LIT:4> + [ <NUM_LIT:1> ] * <NUM_LIT:4> + [ <NUM_LIT:2> ] * <NUM_LIT:4> <EOL> updates = range ( <NUM_LIT:12> ) <EOL> values = [ sch ( epoch , update , '<STR_LIT>' , <NUM_LIT:1> , None , None , None ) <EOL> for epoch , update in six . moves . zip ( epochs , updates ) ] <EOL> assert values == [ <NUM_LIT:1.0> ] * <NUM_LIT:4> + [ <NUM_LIT> ] * <NUM_LIT:4> + [ <NUM_LIT> * <NUM_LIT> ] * <NUM_LIT:4> <EOL> values = [ sch ( epoch , update , '<STR_LIT>' , <NUM_LIT:1> , None , None , None ) <EOL> for epoch , update in six . moves . zip ( epochs , updates ) ] <EOL> assert values == [ <NUM_LIT:1.0> * ( <NUM_LIT> ** x ) for x in range ( <NUM_LIT:4> ) ] + [ <NUM_LIT> ] * <NUM_LIT:8> <EOL> values = [ sch ( epoch , update , '<STR_LIT>' , <NUM_LIT:3> , None , None , None ) <EOL> for epoch , update in six . moves . zip ( epochs , updates ) ] <EOL> assert values == [ <NUM_LIT:1.0> ] * <NUM_LIT:3> + [ <NUM_LIT> ] * <NUM_LIT:3> + [ <NUM_LIT> ] * <NUM_LIT:3> + [ <NUM_LIT> ** <NUM_LIT:3> ] * <NUM_LIT:3> <EOL> def test_multistep ( ) : <EOL> sch = MultiStep ( initial_value = <NUM_LIT:1.0> , steps = [ <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:8> ] , <EOL> values = [ <NUM_LIT:0.1> , <NUM_LIT> , <NUM_LIT> ] ) <EOL> epochs = [ <NUM_LIT:0> ] * <NUM_LIT:2> + [ <NUM_LIT:1> ] * <NUM_LIT:2> + [ <NUM_LIT:2> ] * <NUM_LIT:2> + [ <NUM_LIT:3> ] * <NUM_LIT:2> + [ <NUM_LIT:4> ] * <NUM_LIT:2> <EOL> updates = range ( <NUM_LIT:10> ) <EOL> values = [ sch ( epoch , update , '<STR_LIT>' , <NUM_LIT:1> , None , None , None ) <EOL> for epoch , update in six . moves . zip ( epochs , updates ) ] <EOL> assert values == [ <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:0.1> , <NUM_LIT:0.1> , <NUM_LIT:0.1> , <NUM_LIT:0.1> ] <EOL> values = [ sch ( epoch , update , '<STR_LIT>' , <NUM_LIT:1> , None , None , None ) <EOL> for epoch , update in six . moves . zip ( epochs , updates ) ] <EOL> assert values == [ <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:0.1> , <NUM_LIT:0.1> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] <EOL> with pytest . raises ( AssertionError ) : <EOL> _ = sch ( <NUM_LIT:0> , <NUM_LIT:0> , '<STR_LIT>' , <NUM_LIT:3> , None , None , None ) </s>
