47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from tensorflow.keras import Model, Sequential, layers
|
|
from tensorflow.keras.regularizers import l2
|
|
|
|
from constants import BASES
|
|
|
|
|
|
def build_model(hyper_parameters) -> Model:
|
|
"""
|
|
Builds the CNN model
|
|
"""
|
|
return Sequential(
|
|
[
|
|
# Two convolutions + maxpooling blocks
|
|
layers.Conv1D(
|
|
filters=16,
|
|
kernel_size=5,
|
|
activation="relu",
|
|
kernel_regularizer=l2(hyper_parameters.l2),
|
|
),
|
|
layers.MaxPool1D(pool_size=3, strides=1),
|
|
layers.Conv1D(
|
|
filters=16,
|
|
kernel_size=3,
|
|
activation="relu",
|
|
kernel_regularizer=l2(hyper_parameters.l2),
|
|
),
|
|
layers.MaxPool1D(pool_size=3, strides=1),
|
|
# Flatten the input volume
|
|
layers.Flatten(),
|
|
# Two fully connected layers, each followed by a dropout layer
|
|
layers.Dense(
|
|
units=16,
|
|
activation="relu",
|
|
kernel_regularizer=l2(hyper_parameters.l2),
|
|
),
|
|
layers.Dropout(rate=0.3),
|
|
layers.Dense(
|
|
units=16,
|
|
activation="relu",
|
|
kernel_regularizer=l2(hyper_parameters.l2),
|
|
),
|
|
layers.Dropout(rate=0.3),
|
|
# Output layer with softmax activation
|
|
layers.Dense(units=len(BASES), activation="softmax"),
|
|
]
|
|
)
|