# When would you choose certain CNN pretrained models?

I'm totally new to the field of deep learning so I'm just trying to get a sense of some of the decisions made, especially with convolutional neural networks. After reading a few blogs/articles about the different pretrained CNN architectures, I'm wondering:

When would you choose a certain architecture over another? I've seen a lot of examples using VGG-16 and I'm curious why this one is the go-to when it seems like such a large (and slow?) way to train? Are there certain examples of applications where one architecture would be better than another?

There is a list of models and their performance and parameter count here. I prefer to use the MobileNet model initially. It is about as accurate as VGG but has about 4 million parameters versus the 140 million for VGG. Thus from a computational standpoint and thus training time it is far more efficient. If you modify it to use the callbacks ReduceLROnPlateau and ModelCheckpoint (documentation is here) you can in most cases achieve very good performance. I have found using the Adamax optimizer works very well, documentation for that is here. The code to use MobileNet is shown below

mobile = tf.keras.applications.mobilenet.MobileNet( include_top=False,
input_shape=(image_size,image_size,3),
pooling='avg', weights='imagenet',
alpha=1, depth_multiplier=1)
x=mobile.layers[-1].output
x=keras.layers.BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001 )(x)
predictions=Dense (len(classes), activation='softmax')(x)
model = Model(inputs=mobile.input, outputs=predictions)
for layer in model.layers:
layer.trainable=True