@@ -45,6 +45,8 @@ def __init__(self,
45
45
base_dims : Tuple [int , ...] = (600 , 500 , 500 ),
46
46
embedding_dim : int = 400 ,
47
47
dropout_rate : float = 0.5 ,
48
+ l1_reg : float = 1e-6 ,
49
+ l2_reg : float = 1e-6 ,
48
50
keras_model : keras .Model = None ):
49
51
"""
50
52
Construct SiameseModel
@@ -59,7 +61,11 @@ def __init__(self,
59
61
embedding_dim
60
62
Dimension of the embedding (i.e. the output of the base model)
61
63
dropout_rate
62
- Dropout rate to be used in the base model
64
+ Dropout rate to be used in the base model.
65
+ l1_reg
66
+ L1 regularization rate. Default is 1e-6.
67
+ l2_reg
68
+ L2 regularization rate. Default is 1e-6.
63
69
keras_model
64
70
When provided, this keras model will be used to construct the SiameseModel instance.
65
71
Default is None.
@@ -75,7 +81,9 @@ def __init__(self,
75
81
self .base = self ._get_base_model (input_dim = self .input_dim ,
76
82
dims = base_dims ,
77
83
embedding_dim = embedding_dim ,
78
- dropout_rate = dropout_rate )
84
+ dropout_rate = dropout_rate ,
85
+ l1_reg = l1_reg ,
86
+ l2_reg = l2_reg )
79
87
# Create head model
80
88
self .model = self ._get_head_model (input_dim = self .input_dim ,
81
89
base_model = self .base )
@@ -100,22 +108,24 @@ def save(self, filename: Union[str, Path]):
100
108
def _get_base_model (input_dim : int ,
101
109
dims : Tuple [int , ...] = (600 , 500 , 500 ),
102
110
embedding_dim : int = 400 ,
103
- dropout_rate : float = 0.25 ):
111
+ dropout_rate : float = 0.25 ,
112
+ l1_reg : float = 1e-6 ,
113
+ l2_reg : float = 1e-6 ):
114
+ # pylint: disable=too-many-arguments
104
115
model_input = keras .layers .Input (shape = input_dim , name = 'base_input' )
105
116
for i , dim in enumerate (dims ):
106
117
if i == 0 :
107
118
model_layer = keras .layers .Dense (dim , activation = 'relu' , name = 'dense' + str (i + 1 ),
108
- kernel_regularizer = keras .regularizers .l1_l2 (l1 = 1e-6 , l2 = 1e-6 ))(
119
+ kernel_regularizer = keras .regularizers .l1_l2 (l1 = l1_reg , l2 = l2_reg ))(
109
120
model_input )
110
121
else :
111
- model_layer = keras .layers .Dense (dim , activation = 'relu' , name = 'dense' + str (i + 1 ),
112
- kernel_regularizer = keras .regularizers .l1_l2 (l1 = 1e-6 , l2 = 1e-6 ))(
113
- model_layer )
122
+ model_layer = keras .layers .Dense (dim , activation = 'relu' ,
123
+ name = 'dense' + str (i + 1 ))(model_layer )
114
124
model_layer = keras .layers .BatchNormalization (name = 'normalization' + str (i + 1 ))(model_layer )
115
125
model_layer = keras .layers .Dropout (dropout_rate , name = 'dropout' + str (i + 1 ))(model_layer )
116
126
117
- embedding = keras .layers .Dense (embedding_dim , activation = 'relu' , name = 'embedding' )(
118
- model_layer )
127
+ embedding = keras .layers .Dense (embedding_dim , activation = 'relu' ,
128
+ name = 'embedding' )( model_layer )
119
129
return keras .Model (model_input , embedding , name = 'base' )
120
130
121
131
@staticmethod
0 commit comments