def cloneLayerFromLayer(pLayer): if isinstance(pLayer, Convolution1D): return Convolution1D.from_config(pLayer.get_config()) elif isinstance(pLayer, Convolution2D): return Convolution2D.from_config(pLayer.get_config()) elif isinstance(pLayer, Convolution3D): return Convolution3D.from_config(pLayer.get_config()) # Max-Pooling: elif isinstance(pLayer, MaxPooling1D): return MaxPooling2D.from_config(pLayer.get_config()) elif isinstance(pLayer, MaxPooling2D): return MaxPooling2D.from_config(pLayer.get_config()) elif isinstance(pLayer, MaxPooling3D): return MaxPooling3D.from_config(pLayer.get_config()) # Average-Pooling elif isinstance(pLayer, AveragePooling1D): return AveragePooling1D.from_config(pLayer.get_config()) elif isinstance(pLayer, AveragePooling2D): return AveragePooling2D.from_config(pLayer.get_config()) elif isinstance(pLayer, AveragePooling3D): return AveragePooling3D.from_config(pLayer.get_config()) # elif isinstance(pLayer, Flatten): return Flatten.from_config(pLayer.get_config()) elif isinstance(pLayer, Merge): return Merge.from_config(pLayer.get_config()) elif isinstance(pLayer, Activation): return Activation.from_config(pLayer.get_config()) elif isinstance(pLayer, Dropout): return Dropout.from_config(pLayer.get_config()) # elif isinstance(pLayer, Dense): return Dense.from_config(pLayer.get_config()) return None
def from_config(cls, config, layer_cache=None): '''Supports legacy formats ''' from keras.utils.layer_utils import layer_from_config from keras.layers import Merge assert type(config) is list if not layer_cache: layer_cache = {} def normalize_legacy_config(conf): if 'class_name' not in conf: class_name = conf['name'] name = conf.get('custom_name') conf['name'] = name new_config = { 'class_name': class_name, 'config': conf, } return new_config return conf # the model we will return model = cls() def get_or_create_layer(layer_data): if layer_data['class_name'] == 'Sequential': return Sequential.from_config(layer_data['config'], layer_cache=layer_cache) name = layer_data['config'].get('name') if name in layer_cache: return layer_cache[name] layer = layer_from_config(layer_data) layer_cache[name] = layer return layer first_layer = config[0] first_layer = normalize_legacy_config(first_layer) if first_layer['class_name'] == 'Merge': merge_inputs = [] first_layer_config = first_layer['config'] for merge_input_config in first_layer_config.pop('layers'): merge_input = layer_from_config(merge_input_config) merge_inputs.append(merge_input) first_layer_config['layers'] = merge_inputs merge = Merge.from_config(first_layer_config) model.add(merge) else: layer = get_or_create_layer(first_layer) model.add(layer) for conf in config[1:]: conf = normalize_legacy_config(conf) layer = get_or_create_layer(conf) model.add(layer) return model
def from_config(cls, config, layer_cache=None): '''Supports legacy formats ''' from keras.utils.layer_utils import layer_from_config from keras.layers import Merge assert type(config) is list if not layer_cache: layer_cache = {} def normalize_legacy_config(conf): if 'class_name' not in conf: class_name = conf['name'] name = conf.get('custom_name') conf['name'] = name new_config = { 'class_name': class_name, 'config': conf, } return new_config return conf # the model we will return model = cls() def get_or_create_layer(layer_data): if layer_data['class_name'] == 'Sequential': return Sequential.from_config(layer_data['config'], layer_cache=layer_cache) name = layer_data['config'].get('name') if name in layer_cache: return layer_cache[name] layer = layer_from_config(layer_data) layer_cache[name] = layer return layer first_layer = config[0] first_layer = normalize_legacy_config(first_layer) if first_layer['class_name'] == 'Merge': merge_inputs = [] first_layer_config = first_layer['config'] for merge_input_config in first_layer_config.pop('layers'): merge_input = layer_from_config(merge_input_config) merge_inputs.append(merge_input) first_layer_config['layers'] = merge_inputs merge = Merge.from_config(first_layer_config) model.add(merge) else: layer = get_or_create_layer(first_layer) model.add(layer) for conf in config[1:]: conf = normalize_legacy_config(conf) layer = get_or_create_layer(conf) model.add(layer) return model
def from_config(cls, config, layer_cache=None): """Supports legacy formats """ from keras.utils.layer_utils import layer_from_config from keras.layers import Merge assert type(config) is list if not layer_cache: layer_cache = {} def normalize_legacy_config(conf): if "class_name" not in conf: class_name = conf["name"] name = conf.get("custom_name") conf["name"] = name new_config = {"class_name": class_name, "config": conf} return new_config return conf # the model we will return model = cls() def get_or_create_layer(layer_data): if layer_data["class_name"] == "Sequential": return Sequential.from_config(layer_data["config"], layer_cache=layer_cache) name = layer_data["config"].get("name") if name in layer_cache: return layer_cache[name] layer = layer_from_config(layer_data) layer_cache[name] = layer return layer first_layer = config[0] first_layer = normalize_legacy_config(first_layer) if first_layer["class_name"] == "Merge": merge_inputs = [] first_layer_config = first_layer["config"] for merge_input_config in first_layer_config.pop("layers"): merge_input = layer_from_config(merge_input_config) merge_inputs.append(merge_input) first_layer_config["layers"] = merge_inputs merge = Merge.from_config(first_layer_config) model.add(merge) else: layer = get_or_create_layer(first_layer) model.add(layer) for conf in config[1:]: conf = normalize_legacy_config(conf) layer = get_or_create_layer(conf) model.add(layer) return model
def from_config(cls, config): '''Supports legacy formats ''' from keras.utils.layer_utils import layer_from_config from keras.layers import Merge assert type(config) is list def normalize_legacy_config(conf): if 'class_name' not in conf: class_name = conf['name'] name = conf.get('custom_name') conf['name'] = name new_config = { 'class_name': class_name, 'config': conf, } return new_config return conf model = cls() first_layer = config[0] first_layer = normalize_legacy_config(first_layer) if first_layer['class_name'] == 'Merge': merge_inputs = [] first_layer_config = first_layer['config'] for merge_input_config in first_layer_config.pop('layers'): merge_input = layer_from_config(merge_input_config) merge_inputs.append(merge_input) first_layer_config['layers'] = merge_inputs merge = Merge.from_config(first_layer_config) model.add(merge) else: layer = layer_from_config(first_layer) model.add(layer) for conf in config[1:]: conf = normalize_legacy_config(conf) layer = layer_from_config(conf) model.add(layer) return model
def from_config(cls, config): '''Supports legacy formats ''' from keras.utils.layer_utils import layer_from_config from keras.layers import Merge assert type(config) is list def normalize_legacy_config(conf): if 'class_name' not in conf: class_name = conf['name'] name = conf.get('custom_name') conf['name'] = name new_config = { 'class_name': class_name, 'config': conf, } return new_config return conf model = cls() first_layer = config[0] first_layer = normalize_legacy_config(first_layer) if first_layer['class_name'] == 'Merge': merge_inputs = [] first_layer_config = first_layer['config'] for merge_input_config in first_layer_config.pop('layers'): merge_input = layer_from_config(merge_input_config) merge_inputs.append(merge_input) first_layer_config['layers'] = merge_inputs merge = Merge.from_config(first_layer_config) model.add(merge) else: layer = layer_from_config(first_layer) model.add(layer) for conf in config[1:]: conf = normalize_legacy_config(conf) layer = layer_from_config(conf) model.add(layer) return model