345 {
346
347 if(
layer.sublayers.size() != 2)
348 throw NNConfigurationException("Number of sublayers not matching expected number of 2 for bidirectional layers");
349 const LayerConfig forward_layer_conf =
layer.sublayers[0];
350 const LayerConfig backward_layer_conf =
layer.sublayers[1];
351 size_t n_forward = 0;
352
353 (void) n_forward;
354 size_t n_backward = 0;
359 else
360 throw NNConfigurationException("Bidirectional forward layer type not supported");
361
362 std::unique_ptr<IRecurrentLayer> forward_layer(
m_layers.back());
364
369 else
370 throw NNConfigurationException("Bidirectional backward layer type not supported");
371
372 std::unique_ptr<IRecurrentLayer> backward_layer(
m_layers.back());
373 backward_layer->m_go_backwards = (!forward_layer->m_go_backwards);
375
376 m_layers.push_back(
new BidirectionalLayer(std::move(forward_layer),
377 std::move(backward_layer),
379 layer.return_sequence));
380 return n_backward;
381
382 }
Architecture architecture