def layers(): arch = { 'Input': { '@type': 'Input', 'out_shapes': { 'default': ('T', 'B', 2) }, '@outgoing_connections': ['A', 'B'] }, 'A': { '@type': 'FullyConnected', 'size': 3, '@outgoing_connections': ['C'] }, 'B': { '@type': 'FullyConnected', 'size': 5, '@outgoing_connections': ['C', 'D'] }, 'C': { '@type': 'FullyConnected', 'size': 7, '@outgoing_connections': ['D'] }, 'D': { '@type': 'FullyConnected', 'size': 11, '@outgoing_connections': [] } } return instantiate_layers_from_architecture(arch)
def layers(): arch = { 'Input': { '@type': 'Input', 'out_shapes': {'default': ('T', 'B', 2)}, '@outgoing_connections': ['A', 'B'] }, 'A': { '@type': 'FullyConnected', 'size': 3, '@outgoing_connections': ['C'] }, 'B': { '@type': 'FullyConnected', 'size': 5, '@outgoing_connections': ['C', 'D'] }, 'C': { '@type': 'FullyConnected', 'size': 7, '@outgoing_connections': ['D'] }, 'D': { '@type': 'FullyConnected', 'size': 11, '@outgoing_connections': [] } } return instantiate_layers_from_architecture(arch)
def from_architecture(cls, architecture): """ Create Network instance from given architecture. Args: architecture (dict): JSON serializable Architecture description. Returns: Network: A fully functional Network instance. """ layers = instantiate_layers_from_architecture(architecture) hubs, layout = create_layout(layers) buffer_manager = BufferManager(layout, hubs) return cls(layers, buffer_manager, architecture)
def from_architecture(cls, architecture): """ Create Network instance from given architecture. Args: architecture (dict): JSON serializable Architecture description. Returns: Network: A fully functional Network instance. """ layers = instantiate_layers_from_architecture(architecture) hubs, layout = create_layout(layers) buffer_manager = BufferManager(layout, hubs) return cls(layers, buffer_manager, architecture)
def test_instantiate_layers_from_architecture(): arch = { 'Input': { '@type': 'Input', 'out_shapes': {'default': ('T', 'B', 10,)}, '@outgoing_connections': ['A', 'B', 'C'] }, 'A': { '@type': 'NoOp', '@outgoing_connections': ['B'] }, 'B': { '@type': 'NoOp', '@outgoing_connections': ['D'] }, 'C': { '@type': 'NoOp', '@outgoing_connections': ['D'] }, 'D': { '@type': 'NoOp', '@outgoing_connections': [] } } layers = instantiate_layers_from_architecture(arch) assert set(arch.keys()) == set(layers.keys()) assert isinstance(layers['Input'], InputLayerImpl) assert type(layers['A']) == NoOpLayerImpl assert type(layers['B']) == NoOpLayerImpl assert type(layers['C']) == NoOpLayerImpl assert type(layers['D']) == NoOpLayerImpl assert layers['Input'].in_shapes == {} assert layers['Input'].out_shapes == {'default': BufferStructure('T', 'B', 10)} assert layers['A'].in_shapes == {'default': BufferStructure('T', 'B', 10)} assert layers['A'].out_shapes == {'default': BufferStructure('T', 'B', 10)} assert layers['B'].in_shapes == {'default': BufferStructure('T', 'B', 20)} assert layers['B'].out_shapes == {'default': BufferStructure('T', 'B', 20)} assert layers['C'].in_shapes == {'default': BufferStructure('T', 'B', 10)} assert layers['C'].out_shapes == {'default': BufferStructure('T', 'B', 10)} assert layers['D'].in_shapes == {'default': BufferStructure('T', 'B', 30)} assert layers['D'].out_shapes == {'default': BufferStructure('T', 'B', 30)}