def build_model_arc(self): output_dim = len(self.pre_processor.label2idx) config = self.hyper_parameters embed_model = self.embedding.embed_model layers_rcnn_seq = [] layers_rcnn_seq.append(L.SpatialDropout1D(**config['spatial_dropout'])) layers_rcnn_seq.append(L.Bidirectional(L.GRU(**config['rnn_0']))) layers_rcnn_seq.append(L.Conv1D(**config['conv_0'])) layers_sensor = [] layers_sensor.append(L.GlobalMaxPooling1D()) layers_sensor.append(AttentionWeightedAverageLayer()) layers_sensor.append(L.GlobalAveragePooling1D()) layer_concat = L.Concatenate(**config['concat']) layers_full_connect = [] layers_full_connect.append(L.Dropout(**config['dropout'])) layers_full_connect.append(L.Dense(**config['dense'])) layers_full_connect.append( L.Dense(output_dim, **config['activation_layer'])) tensor = embed_model.output for layer in layers_rcnn_seq: tensor = layer(tensor) tensors_sensor = [layer(tensor) for layer in layers_sensor] tensor_output = layer_concat(tensors_sensor) # tensor_output = L.concatenate(tensor_sensors, **config['concat']) for layer in layers_full_connect: tensor_output = layer(tensor_output) self.tf_model = tf.keras.Model(embed_model.inputs, tensor_output)
def build_model_arc(self): output_dim = len(self.pre_processor.label2idx) config = self.hyper_parameters embed_model = self.embedding.embed_model layers_rnn = [] layers_rnn.append(L.SpatialDropout1D(**config['spatial_dropout'])) layers_rnn.append(L.Bidirectional(L.GRU(**config['rnn_0']))) layers_rnn.append(L.SpatialDropout1D(**config['rnn_dropout'])) layers_rnn.append(L.Bidirectional(L.GRU(**config['rnn_1']))) layers_sensor = [] layers_sensor.append(L.Lambda(lambda t: t[:, -1], name='last')) layers_sensor.append(L.GlobalMaxPooling1D()) layers_sensor.append(AttentionWeightedAverageLayer()) layers_sensor.append(L.GlobalAveragePooling1D()) layer_allviews = L.Concatenate(**config['all_views']) layers_full_connect = [] layers_full_connect.append(L.Dropout(**config['dropout_0'])) layers_full_connect.append(L.Dense(**config['dense'])) layers_full_connect.append(L.Dropout(**config['dropout_1'])) layers_full_connect.append( L.Dense(output_dim, **config['activation_layer'])) tensor_rnn = embed_model.output for layer in layers_rnn: tensor_rnn = layer(tensor_rnn) tensor_sensors = [layer(tensor_rnn) for layer in layers_sensor] tensor_output = layer_allviews(tensor_sensors) for layer in layers_full_connect: tensor_output = layer(tensor_output) self.tf_model = tf.keras.Model(embed_model.inputs, tensor_output)
def build_model_arc(self): output_dim = len(self.pre_processor.label2idx) config = self.hyper_parameters embed_model = self.embedding.embed_model layer_embed_dropout = L.SpatialDropout1D(**config['spatial_dropout']) layers_conv = [L.Conv1D(**config[f'conv_{i}']) for i in range(4)] layers_sensor = [] layers_sensor.append(L.GlobalMaxPooling1D()) layers_sensor.append(AttentionWeightedAverageLayer()) layers_sensor.append(L.GlobalAveragePooling1D()) layer_view = L.Concatenate(**config['v_col3']) layer_allviews = L.Concatenate(**config['merged_tensor']) layers_seq = [] layers_seq.append(L.Dropout(**config['dropout'])) layers_seq.append(L.Dense(**config['dense'])) layers_seq.append(L.Dense(output_dim, **config['activation_layer'])) embed_tensor = layer_embed_dropout(embed_model.output) tensors_conv = [layer_conv(embed_tensor) for layer_conv in layers_conv] tensors_matrix_sensor = [] for tensor_conv in tensors_conv: tensor_sensors = [] tensor_sensors = [ layer_sensor(tensor_conv) for layer_sensor in layers_sensor ] # tensor_sensors.append(L.GlobalMaxPooling1D()(tensor_conv)) # tensor_sensors.append(AttentionWeightedAverageLayer()(tensor_conv)) # tensor_sensors.append(L.GlobalAveragePooling1D()(tensor_conv)) tensors_matrix_sensor.append(tensor_sensors) tensors_views = [ layer_view(list(tensors)) for tensors in zip(*tensors_matrix_sensor) ] tensor = layer_allviews(tensors_views) # tensors_v_cols = [L.concatenate(tensors, **config['v_col3']) for tensors # in zip(*tensors_matrix_sensor)] # tensor = L.concatenate(tensors_v_cols, **config['merged_tensor']) for layer in layers_seq: tensor = layer(tensor) self.tf_model = tf.keras.Model(embed_model.inputs, tensor)