chapter two

2 Procedural Design Pattern

 

This chapter covers

  • Introducing a procedural design pattern for a convolutional neural network
  • Decomposing the architecture of the procedural design pattern into macro and micro components
  • Coding former state-of-the-art (SOTA) models with the procedural design pattern

Prior to 2017, the majority of renditions of neural network models were coded in a batch scripting style. As AI researchers and experienced software engineers became increasingly involved in research and design, we started to see a shift in the coding of models that reflected software engineering principles for reuse and design patterns.

One of the earliest versions of using design patterns for neural network models was the use of a procedural style for reuse. We will briefly cover one procedural reuse design pattern based on the Idiomatic design pattern for convolutional neural network models. A design pattern implies that there is a “best practice” for constructing and coding a model which can be re-applied across a wide range of cases, such as image classification, object detection and tracking, facial recognition, image segmentation, super resolution, and style transfer.

2.1      Architecture

2.2      Stem Component

2.2.1                     VGG

2.2.2                     ResNet

2.2.3                     ResNeXt

2.2.4                     Xception

2.3      Pre-Stem

2.4      Learner Component

2.4.1                     ResNet

2.4.2                     DenseNet

2.5      Task Component

2.5.1                     ResNet

2.5.2                     Multi-Layer Output

2.5.3                     SqueezeNet

2.6      Summary