Example #1
0
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")
Example #2
0
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")
Example #3
0
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
Example #4
0
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")
Example #5
0
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")
Example #6
0
# -

# ### モデルのアーキテクチャを可視化

# +
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"}
Example #7
0
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")