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(): 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 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(): 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")
# - # ### モデルのアーキテクチャを可視化 # + import sys sys.path.append('../../python_lib/convnet-drawer') # + from keras.models import Sequential from convnet_drawer import Model, Conv2D, MaxPooling2D, Flatten, Dense drawer_model = Model(input_shape=(28, 28, 3)) drawer_model.add(Flatten()) drawer_model.add(Dense(1500)) drawer_model.add(Dense(1000)) drawer_model.add(Dense(500)) drawer_model.add(Dense(10)) drawer_model.add(Dense(500)) drawer_model.add(Dense(1000)) drawer_model.add(Dense(1500)) drawer_model.add(Dense(784)) drawer_model.save_fig('alexnet.svg') # + {"colab_type": "text", "id": "mvFdHRtk2GGY", "cell_type": "markdown"} # ### モデルの概要を表示 # + {"colab": {"base_uri": "https://localhost:8080/", "height": 442}, "colab_type": "code", "id": "cr3WlpfZBd7a", "outputId": "75a74782-6a78-4ed2-bbb1-34dc3d770b83"}
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")