(self, model, forward_only=False, loss_scale=None)
| 196 | model.params.append(self.decoder_embeddings) |
| 197 | |
| 198 | def model_build_fun(self, model, forward_only=False, loss_scale=None): |
| 199 | encoder_inputs = model.net.AddExternalInput( |
| 200 | workspace.GetNameScope() + 'encoder_inputs', |
| 201 | ) |
| 202 | encoder_lengths = model.net.AddExternalInput( |
| 203 | workspace.GetNameScope() + 'encoder_lengths', |
| 204 | ) |
| 205 | decoder_inputs = model.net.AddExternalInput( |
| 206 | workspace.GetNameScope() + 'decoder_inputs', |
| 207 | ) |
| 208 | decoder_lengths = model.net.AddExternalInput( |
| 209 | workspace.GetNameScope() + 'decoder_lengths', |
| 210 | ) |
| 211 | targets = model.net.AddExternalInput( |
| 212 | workspace.GetNameScope() + 'targets', |
| 213 | ) |
| 214 | target_weights = model.net.AddExternalInput( |
| 215 | workspace.GetNameScope() + 'target_weights', |
| 216 | ) |
| 217 | attention_type = self.model_params['attention'] |
| 218 | assert attention_type in ['none', 'regular', 'dot'] |
| 219 | |
| 220 | ( |
| 221 | encoder_outputs, |
| 222 | weighted_encoder_outputs, |
| 223 | final_encoder_hidden_states, |
| 224 | final_encoder_cell_states, |
| 225 | encoder_units_per_layer, |
| 226 | ) = seq2seq_util.build_embedding_encoder( |
| 227 | model=model, |
| 228 | encoder_params=self.encoder_params, |
| 229 | num_decoder_layers=len(self.model_params['decoder_layer_configs']), |
| 230 | inputs=encoder_inputs, |
| 231 | input_lengths=encoder_lengths, |
| 232 | vocab_size=self.source_vocab_size, |
| 233 | embeddings=self.encoder_embeddings, |
| 234 | embedding_size=self.model_params['encoder_embedding_size'], |
| 235 | use_attention=(attention_type != 'none'), |
| 236 | num_gpus=self.num_gpus, |
| 237 | ) |
| 238 | |
| 239 | ( |
| 240 | decoder_outputs, |
| 241 | decoder_output_size, |
| 242 | ) = seq2seq_util.build_embedding_decoder( |
| 243 | model, |
| 244 | decoder_layer_configs=self.model_params['decoder_layer_configs'], |
| 245 | inputs=decoder_inputs, |
| 246 | input_lengths=decoder_lengths, |
| 247 | encoder_lengths=encoder_lengths, |
| 248 | encoder_outputs=encoder_outputs, |
| 249 | weighted_encoder_outputs=weighted_encoder_outputs, |
| 250 | final_encoder_hidden_states=final_encoder_hidden_states, |
| 251 | final_encoder_cell_states=final_encoder_cell_states, |
| 252 | encoder_units_per_layer=encoder_units_per_layer, |
| 253 | vocab_size=self.target_vocab_size, |
| 254 | embeddings=self.decoder_embeddings, |
| 255 | embedding_size=self.model_params['decoder_embedding_size'], |
no test coverage detected