diff --git a/src/mlpack/methods/ann/layer/lstm_impl.hpp b/src/mlpack/methods/ann/layer/lstm_impl.hpp index 66020982fc..b1e73ca96b 100644 --- a/src/mlpack/methods/ann/layer/lstm_impl.hpp +++ b/src/mlpack/methods/ann/layer/lstm_impl.hpp @@ -20,6 +20,7 @@ namespace mlpack { template LSTMType::LSTMType() : RecurrentLayer(), + inSize(0), outSize(0) { // Nothing to do here. @@ -28,6 +29,7 @@ LSTMType::LSTMType() : template LSTMType::LSTMType(const size_t outSize) : RecurrentLayer(), + inSize(0), outSize(outSize) { // Nothing to do here. @@ -35,16 +37,21 @@ LSTMType::LSTMType(const size_t outSize) : template LSTMType::LSTMType(const LSTMType& layer) : - RecurrentLayer(layer) + RecurrentLayer(layer), + inSize(layer.inSize), + outSize(layer.outSize) { // Nothing to do here. } template LSTMType::LSTMType(LSTMType&& layer) : - RecurrentLayer(std::move(layer)) + RecurrentLayer(std::move(layer)), + inSize(layer.inSize), + outSize(layer.outSize) { - // Nothing to do here. + layer.inSize = 0; + layer.outSize = 0; } template @@ -53,6 +60,8 @@ LSTMType& LSTMType::operator=(const LSTMType& layer) if (this != &layer) { RecurrentLayer::operator=(layer); + inSize = layer.inSize; + outSize = layer.outSize; } return *this; @@ -64,6 +73,11 @@ LSTMType& LSTMType::operator=(LSTMType&& layer) if (this != &layer) { RecurrentLayer::operator=(std::move(layer)); + inSize = layer.inSize; + outSize = layer.outSize; + + layer.inSize = 0; + layer.outSize = 0; } return *this;