from keras.models import Sequential
Keras provides a lot API and the prototype of model for developing model.
class sampleVGGNet: @staticmethod def build(width, height, depth, classes): # initialize the model along with the input shape to be # "channels last" and the channels dimension itself model = Sequential() inputShape = (height, width, depth)
customizing the model by the processing flow
class LeNet: @staticmethod def build(width, height, depth, classes): # initialize the model model = Sequential() inputShape = (height, width, depth) # if we are using "channels first", update the input shape if K.image_data_format() == "channels_first": inputShape = (depth, height, width) # first set of CONV => RELU => POOL layers model.add(Conv2D(20, (5, 5), padding="same", input_shape=inputShape)) model.add(Activation("relu")) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) # second set of CONV => RELU => POOL layers model.add(Conv2D(50, (5, 5), padding="same")) model.add(Activation("relu")) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) # first (and only) set of FC => RELU layers model.add(Flatten()) model.add(Dense(500)) model.add(Activation("relu")) # softmax classifier model.add(Dense(classes)) model.add(Activation("softmax")) # return the constructed network architecture return model
Almost changing exist model to be a new one.
# import the necessary packages from keras.applications import VGG16 from keras.layers.core import Dropout from keras.layers.core import Flatten from keras.layers.core import Dense from keras.layers import Input from keras.models import Model class VGG2: @staticmethod def build(size_width, classes, D): # initialize the head model that will be placed on top of # the base, then add a FC layer baseModel = VGG16(weights="imagenet", include_top=False, input_tensor=Input(shape=(size_width, size_width, 3))) headModel = baseModel.output headModel = Flatten(name="flatten")(headModel) headModel = Dense(D, activation="relu")(headModel) headModel = Dropout(0.5)(headModel) # add a softmax layer headModel = Dense(classes, activation="softmax")(headModel) # return the model return Model(inputs=baseModel.input, outputs=headModel)