def test_layer_from_shape_valid_get_output(self, layer_from_shape, get_outputs): layer = layer_from_shape inputs = {layer: theano.tensor.matrix()} assert get_outputs(layer, inputs) == (inputs[layer], ) inputs = {None: theano.tensor.matrix()} layer.get_outputs_for = Mock() assert get_outputs(layer, inputs) is layer.get_outputs_for.return_value layer.get_outputs_for.assert_called_with((inputs[None], ))
def test_get_output_with_unused_kwarg(self, layers, get_outputs): l1, l2, l3 = layers l2.get_outputs_for = lambda data, asdf=123, **kwargs: (data, ) unused_kwarg = object() with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') get_outputs(l3, kwagg=unused_kwarg) assert len(w) == 1 assert issubclass(w[0].category, UserWarning) assert 'perhaps you meant kwarg' in str(w[0].message) with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') get_outputs(l3, adsf=unused_kwarg) assert len(w) == 1 assert issubclass(w[0].category, UserWarning) assert 'perhaps you meant asdf' in str(w[0].message)
def test_get_output_without_arguments(self, layers, get_outputs): l1, l2, l3 = layers output = get_outputs(l3) # expected: l3.get_output_for(l2.get_output_for(l1.input_var)) assert output == l3.get_outputs_for.return_value l3.get_outputs_for.assert_called_with(l2.get_outputs_for.return_value) l2.get_outputs_for.assert_called_with((l1.input_var, ))
def test_get_output_input_is_a_mapping_no_key(self, layers, get_outputs): l1, l2, l3 = layers output = get_outputs(l3, {}) # expected: l3.get_output_for(l2.get_output_for(l1.input_var)) assert output == l3.get_outputs_for.return_value l3.get_outputs_for.assert_called_with(l2.get_outputs_for.return_value) l2.get_outputs_for.assert_called_with((l1.input_var, ))
def test_get_output_with_single_argument(self, layers, get_outputs): l1, l2, l3 = layers inputs, kwarg = theano.tensor.matrix(), object() output = get_outputs(l3, inputs, kwarg=kwarg) # expected: l3.get_output_for(l2.get_output_for(inputs, kwarg=kwarg), # kwarg=kwarg) assert output == l3.get_outputs_for.return_value l3.get_outputs_for.assert_called_with(l2.get_outputs_for.return_value, kwarg=kwarg) l2.get_outputs_for.assert_called_with((inputs, ), kwarg=kwarg)
def test_get_output_input_is_a_mapping(self, layers, get_outputs): l1, l2, l3 = layers p = PropertyMock() type(l1).input_var = p inputs = {l3: theano.tensor.matrix()} # expected: inputs[l3] assert get_outputs(l3, inputs) == (inputs[l3], ) # l3.get_output_for, l2.get_output_for should not have been called assert l3.get_output_for.call_count == 0 assert l2.get_output_for.call_count == 0 # l1.input_var should not have been accessed assert p.call_count == 0
def test_get_output_input_is_a_mapping_to_array(self, layers, get_outputs): l1, l2, l3 = layers p = PropertyMock() type(l1).input_var = p inputs = {l3: [[1, 2, 3]]} output = get_outputs(l3, inputs) # expected: inputs[l3] assert numpy.all(output[0].eval() == inputs[l3]) # l3.get_output_for, l2.get_output_for should not have been called assert l3.get_output_for.call_count == 0 assert l2.get_output_for.call_count == 0 # l1.input_var should not have been accessed assert p.call_count == 0
def test_layer_from_shape_invalid_get_output(self, layer_from_shape, get_outputs): layer = layer_from_shape with pytest.raises(ValueError): get_outputs(layer) with pytest.raises(ValueError): get_outputs(layer, [1, 2]) with pytest.raises(ValueError): get_outputs(layer, {layer.input_layers[1]: [1, 2]})
def test_get_output_input_is_a_mapping_for_layer(self, layers, get_outputs): l1, l2, l3 = layers p = PropertyMock() type(l1).input_var = p input_expr, kwarg = theano.tensor.matrix(), object() inputs = {l2: input_expr} output = get_outputs(l3, inputs, kwarg=kwarg) # expected: l3.get_output_for(input_expr, kwarg=kwarg) assert output == l3.get_outputs_for.return_value l3.get_outputs_for.assert_called_with((input_expr, ), kwarg=kwarg) # l2.get_output_for should not have been called assert l2.get_outputs_for.call_count == 0 # l1.input_var should not have been accessed assert p.call_count == 0
def test_get_output_without_arguments(self, layer, get_outputs): assert get_outputs(layer) == (layer.input_var, )
def test_get_output_with_single_argument_fails(self, layers, get_outputs): l1, l2, l3 = layers inputs, kwarg = theano.tensor.matrix(), object() # expected to fail: only gave one expression for two input layers with pytest.raises(ValueError): output = get_outputs(l3, inputs, kwarg=kwarg)
def test_get_output_with_no_unused_kwarg(self, layers, get_outputs): l1, l2, l3 = layers with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') get_outputs(l3) assert len(w) == 0
def test_get_output_input_is_a_mapping(self, layer, get_outputs): inputs = {layer: theano.tensor.matrix()} assert get_outputs(layer, inputs) == (inputs[layer], )
def test_get_output_input_is_array(self, layer, get_outputs): inputs = [[1, 2, 3]] output = get_outputs(layer, inputs) assert numpy.all(output[0].eval() == inputs)
def test_get_output_input_is_variable(self, layer, get_outputs): variable = theano.Variable("myvariable") assert get_outputs(layer, variable) == (variable, )