def instantiate_layers_from_architecture(architecture): validate_architecture(architecture) layers = OrderedDict() connections = collect_all_connections(architecture) for layer_name in get_canonical_layer_order(architecture): layer = architecture[layer_name] LayerClass = get_layer_class_from_typename(layer['@type'] + 'LayerImpl') incoming = {c for c in connections if c.end_layer == layer_name} outgoing = {c for c in connections if c.start_layer == layer_name} input_names = {c.input_name for c in incoming} in_shapes = {} for input_name in input_names: incoming_out_shapes = [ layers[c.start_layer].get_shape( get_normalized_path('outputs', c.output_name)) for c in incoming if c.input_name == input_name] in_shapes[input_name] = combine_buffer_structures( incoming_out_shapes) layers[layer_name] = LayerClass(layer_name, in_shapes, incoming, outgoing, **get_kwargs(layer)) return layers
def test_get_layer_class_from_typename_raises_typeerror(): with pytest.raises(TypeError): get_layer_class_from_typename('NonexistentLayer')
def test_get_layer_class_from_typename(): assert get_layer_class_from_typename('InputLayerImpl') == InputLayerImpl assert get_layer_class_from_typename('NoOpLayerImpl') == NoOpLayerImpl
def test_get_layer_class_from_typename_raises_typeerror(): with pytest.raises(TypeError): get_layer_class_from_typename('NonexistentLayer')
def test_get_layer_class_from_typename(): assert get_layer_class_from_typename('InputLayerImpl') == InputLayerImpl assert get_layer_class_from_typename('NoOpLayerImpl') == NoOpLayerImpl