def convert_drawer_model(model): _input_shape = model.input_shape # figure = Model(input_shape=_input_shape[1:]) # CNN Model if len(_input_shape) == 4: figure = Model(input_shape=_input_shape[1:]) # MLP Model else: dims = int(np.sqrt(_input_shape[1])) _input_shape = (1,dims, dims,1) figure = Model(input_shape=_input_shape[1:]) figure.add(Flatten()) for config in model.get_config()["layers"]: class_name = config.get("class_name", False) class_config = config.get("config", False) print(class_name,class_config) if class_name and class_config: # class_obj = is_class_object(class_name) print(class_name) if class_name == "Conv2D": class_obj = is_class_object(class_name) conv_2d = get_conv2d_obj(class_obj, class_config) figure.add(conv_2d) elif class_name == "MaxPooling2D": class_obj = is_class_object(class_name) max_pooling_2d = get_maxpooling2d_obj(class_obj, class_config) figure.add(max_pooling_2d) elif class_name == "AveragePooling2D": class_obj = is_class_object(class_name) avg_pooling_2d = get_avgpooling2d_obj(class_obj, class_config) figure.add(avg_pooling_2d) elif class_name == "Dense": class_obj = is_class_object(class_name) dense = get_dense_obj(class_obj, class_config) figure.add(dense) elif class_name == "Activation": pass elif class_name == "Dropout": pass elif class_name == "BatchNormalizationV1": pass elif class_name == "BatchNormalization": pass elif class_name == "InputLayer": pass elif class_name == "Sequential": pass elif class_name == "Add": pass else: class_obj = is_class_object(class_name) figure.add(class_obj()) else: raise ValueError return figure
def main(): model = Model(input_shape=(224, 224, 3)) model.add(Conv2D(64, (3, 3), padding="same")) model.add(Conv2D(64, (3, 3), padding="same")) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(128, (3, 3), padding="same")) model.add(Conv2D(128, (3, 3), padding="same")) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(256, (3, 3), padding="same")) model.add(Conv2D(256, (3, 3), padding="same")) model.add(Conv2D(256, (3, 3), padding="same")) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(512, (3, 3), padding="same")) model.add(Conv2D(512, (3, 3), padding="same")) model.add(Conv2D(512, (3, 3), padding="same")) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(512, (3, 3), padding="same")) model.add(Conv2D(512, (3, 3), padding="same")) model.add(Conv2D(512, (3, 3), padding="same")) model.add(MaxPooling2D((2, 2))) model.add(Flatten()) model.add(Dense(4096)) model.add(Dense(4096)) model.add(Dense(1000)) model.save_fig(os.path.splitext(os.path.basename(__file__))[0] + ".svg") save_model_to_pptx( model, os.path.splitext(os.path.basename(__file__))[0] + ".pptx")
def create_model(): model = Model(input_shape=(256, 256, 3)) #16 model.add(Conv2D(16, (3, 3), (1, 1), padding='same')) model.add(Conv2D(16, (3, 3), (1, 1), padding='same')) model.add(MaxPooling2D((2, 2), strides=(2, 2))) #32 model.add(Conv2D(32, (3, 3), (1, 1), padding='same')) model.add(Conv2D(32, (3, 3), (1, 1), padding='same')) model.add(MaxPooling2D((2, 2), strides=(2, 2))) #64 model.add(Conv2D(64, (3, 3), (1, 1), padding='same')) model.add(Conv2D(64, (3, 3), (1, 1), padding='same')) model.add(MaxPooling2D((2, 2), strides=(2, 2))) #96 model.add(Conv2D(96, (3, 3), (1, 1), padding='same')) model.add(Conv2D(96, (3, 3), (1, 1), padding='same')) model.add(MaxPooling2D((2, 2), strides=(2, 2))) #128 model.add(Conv2D(128, (3, 3), (1, 1), padding='same')) model.add(Conv2D(128, (3, 3), (1, 1), padding='same')) model.add(MaxPooling2D((2, 2), strides=(2, 2))) model.add(Flatten()) model.add(Dense(96)) model.add(Dense(5)) # save as svg file model.save_fig("example5.svg")
def main(): configure(inter_layer_margin=65, channel_scale=4 / 5) model = Model(input_shape=(32, 32, 1)) model.add(Conv2D(6, (5, 5), (1, 1))) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(16, (5, 5))) model.add(MaxPooling2D((2, 2))) model.add(Flatten()) model.add(Dense(120)) model.add(Dense(84)) model.add(Dense(10)) model.save_fig(os.path.splitext(os.path.basename(__file__))[0] + ".svg")
def main(): model = Model(input_shape=(227, 227, 3)) model.add(Conv2D(96, (11, 11), (4, 4))) model.add(MaxPooling2D((3, 3), strides=(2, 2))) model.add(Conv2D(256, (5, 5), padding="same")) model.add(MaxPooling2D((3, 3), strides=(2, 2))) model.add(Conv2D(384, (3, 3), padding="same")) model.add(Conv2D(384, (3, 3), padding="same")) model.add(Conv2D(256, (3, 3), padding="same")) model.add(MaxPooling2D((3, 3), strides=(2, 2))) model.add(Flatten()) model.add(Dense(4096)) model.add(Dense(4096)) model.add(Dense(1000)) model.save_fig(os.path.splitext(os.path.basename(__file__))[0] + ".svg")
def convert_drawer_model(model): _input_shape = model.input_shape figure = Model(input_shape=_input_shape[1:]) prev_class_obj = None prev_class_config = None for i, config in enumerate(model.get_config()["layers"]): class_name = config.get("class_name", False) class_config = config.get("config", False) if class_name and class_config: class_obj = is_class_object(class_name) if class_name == "Conv2D": conv_2d = get_conv2d_obj(class_obj, class_config) if prev_class_obj: dropout = get_dropout_obj(prev_class_obj, prev_class_config, class_config) figure.add(dropout) figure.add(conv_2d) prev_class_obj = None # reset prev_class_config = None elif class_name == "MaxPooling2D": max_pooling_2d = get_maxpooling2d_obj(class_obj, class_config) figure.add(max_pooling_2d) elif class_name == "Dense": next_activation_layer_config = None if verbose: next_activation_layer = model.get_config()["layers"][i + 1] if next_activation_layer["class_name"] == "Activation": next_activation_layer_config = next_activation_layer[ "config"] dense = get_dense_obj(class_obj, class_config, next_activation_layer_config= next_activation_layer_config) else: dense = get_dense_obj(class_obj, class_config) figure.add(dense) elif class_name == "Dropout": prev_class_obj = class_obj prev_class_config = class_config elif class_name == "Activation": pass else: figure.add(class_obj()) else: raise ValueError return figure
def main(): config.channel_scale = 2 / 3 model = Model(input_shape=(256, 256, 3)) model.add(Conv2D(16, (3, 3), (2, 2), padding="same")) model.add(Conv2D(32, (3, 3), (2, 2), padding="same")) model.add(Conv2D(64, (3, 3), (2, 2), padding="same")) model.add(Conv2D(128, (3, 3), (2, 2), padding="same")) model.add(Conv2D(256, (3, 3), (2, 2), padding="same")) model.add(Deconv2D(128, (3, 3), (2, 2), padding="same")) model.add(Deconv2D(64, (3, 3), (2, 2), padding="same")) model.add(Deconv2D(32, (3, 3), (2, 2), padding="same")) model.add(Deconv2D(16, (3, 3), (2, 2), padding="same")) model.add(Deconv2D(3, (3, 3), (2, 2), padding="same")) model.save_fig(os.path.splitext(os.path.basename(__file__))[0] + ".svg") save_model_to_pptx( model, os.path.splitext(os.path.basename(__file__))[0] + ".pptx")
def convert_drawer_model(model): _input_shape = model.input_shape figure = Model(input_shape=_input_shape[1:]) for config in model.get_config()["layers"]: class_name = config.get("class_name", False) class_config = config.get("config", False) if class_name and class_config: class_obj = is_class_object(class_name) if class_name == "Conv2D": conv_2d = get_conv2d_obj(class_obj, class_config) figure.add(conv_2d) elif class_name == "MaxPooling2D": max_pooling_2d = get_maxpooling2d_obj(class_obj, class_config) figure.add(max_pooling_2d) elif class_name == "Dense": dense = get_dense_obj(class_obj, class_config) figure.add(dense) else: figure.add(class_obj()) else: raise ValueError return figure
from convnet_drawer import Model, Conv2D, MaxPooling2D, Flatten, Dense model = Model(input_shape=(50, 50, 3)) model.add(Conv2D(32, (3, 3), padding="same")) model.add(Conv2D(32, (3, 3))) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(64, (3, 3), padding='same')) model.add(Conv2D(64, (3, 3))) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(512)) model.add(Dense(4)) model.save_fig("example.svg")