Package: visualkeras
visualkeras for Keras / TensorFlowIntroductionVisualkeras is a Python package to help visualize Keras (either standalone or included in tensorflow) neural network architectures. It allows easy styling to fit most
needs. This module supports layered style architecture generation which is great for CNNs (Convolutional Neural
Networks), and a graph style architecture, which works great for most models including plain feed-forward networks.Model SupportModeSequentialFunctionalSubclassed modelsvisualkeras.layered_view()yes(1)partially(1,2)not testedvisualkeras.graph_view()yesyesnot tested1: Any tensor with more than 3 dimensions will be rendered as 3D tensor with elongated z-axis.2: Only linear models where each layer has no more than one in or output. Non-linear models will be shown in sequential order.InstallationTo install published releases from PyPi execute:pipinstallvisualkerasTo update visualkeras to the latest version, add the--upgradeflag to the above commands.If you want the latest (potentially unstable) features you can also directly install from the github master branch:pipinstallgit+https://github.com/paulgavrikov/visualkerasUsageGenerating neural network architectures is easy:importvisualkerasmodel=...visualkeras.layered_view(model).show()# display using your system viewervisualkeras.layered_view(model,to_file='output.png')# write to diskvisualkeras.layered_view(model,to_file='output.png').show()# write and showTo help understand some of the most important parameters we are going to use a VGG16 CNN architecture (seeexample.py).Defaultvisualkeras.layered_view(model)LegendYou can set the legend parameter to describe the relationship between color and layer types. It is also possible to pass
a customPIL.ImageFontto use (or just leave it out and visualkeras will use the default PIL font). Please note that
you may need to provide the full path of the desired font depending on your OS.fromPILimportImageFontfont=ImageFont.truetype("arial.ttf",32)# using comic sans is strictly prohibited!visualkeras.layered_view(model,legend=True,font=font)# font is optional!Flat Stylevisualkeras.layered_view(model,draw_volume=False)Spacing and logic groupingThe global distance between two layers can be controlled withspacing. To generate logical groups a special dummy
keras layervisualkeras.SpacingDummyLayer()can be added.model=......model.add(visualkeras.SpacingDummyLayer(spacing=100))...visualkeras.layered_view(model,spacing=0)Custom color mapIt is possible to provide a custom color map for fill and outline per layer type.fromtensorflow.python.keras.layersimportDense,Conv2D,Flatten,Dropout,MaxPooling2D,ZeroPadding2Dfromcollectionsimportdefaultdictcolor_map=defaultdict(dict)color_map[Conv2D]['fill']='orange'color_map[ZeroPadding2D]['fill']='gray'color_map[Dropout]['fill']='pink'color_map[MaxPooling2D]['fill']='red'color_map[Dense]['fill']='green'color_map[Flatten]['fill']='teal'visualkeras.layered_view(model,color_map=color_map)Hiding layersSome models may consist of too many layers to visualize or to comprehend the model. In this case it can be helpful to
hide (ignore) certain layers of the keras model without modifying it. Visualkeras allows ignoring layers by their type
(type_ignore) or index in the keras layer sequence (index_ignore).visualkeras.layered_view(model,type_ignore=[ZeroPadding2D,Dropout,Flatten])Scaling dimensionsVisualkeras computes the size of each layer by the output shape. Values are transformed into pixels. Then, scaling is
applied. By default visualkeras will enlarge the x and y dimension and reduce the size of the z dimensions as this has
deemed visually most appealing. However, it is possible to control scaling usingscale_xyandscale_z. Additionally,
to prevent to small or large options minimum and maximum values can be set (min_xy,min_z,max_xy,max_z).visualkeras.layered_view(model,scale_xy=1,scale_z=1,max_z=1000)Note: Scaled models may hide the true complexity of a layer, but are visually more appealing.