@@ -245,7 +245,7 @@ std::string ROperator_LSTM<T>::GenerateSessionMembersCode(std::string opName)
245245 size_t input_size = fShapeX[2];
246246
247247 if (fAttrLayout != 0) {
248- out << "std::vector<" << fType << "> fVec_" << opName << "_input = std::vector<" << fType << ">("
248+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_input = std::vector<" << fType << ">("
249249 << seq_length * batch_size * input_size << ");\n";
250250 out << "std::vector<" << fType << "> fVec_" << opName << "_initial_hidden_state = std::vector<" << fType << ">("
251251 << num_directions * batch_size * fAttrHiddenSize << ");\n";
@@ -254,24 +254,24 @@ std::string ROperator_LSTM<T>::GenerateSessionMembersCode(std::string opName)
254254 }
255255 // Set the feedforward
256256 size_t ff_size = seq_length * batch_size * fAttrHiddenSize;
257- out << "std::vector<" << fType << "> fVec_" << opName << "_ff_input_gate = std::vector<" << fType << ">(" << ff_size << ");\n";
258- out << "std::vector<" << fType << "> fVec_" << opName << "_ff_output_gate = std::vector<" << fType << ">(" << ff_size << ");\n";
259- out << "std::vector<" << fType << "> fVec_" << opName << "_ff_cell_gate = std::vector<" << fType << ">(" << ff_size << ");\n";
257+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_ff_input_gate = std::vector<" << fType << ">(" << ff_size << ");\n";
258+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_ff_output_gate = std::vector<" << fType << ">(" << ff_size << ");\n";
259+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_ff_cell_gate = std::vector<" << fType << ">(" << ff_size << ");\n";
260260 if (fAttrInputForget == 0)
261- out << "std::vector<" << fType << "> fVec_" << opName << "_ff_forget_gate = std::vector<" << fType << ">(" << ff_size << ");\n";
261+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_ff_forget_gate = std::vector<" << fType << ">(" << ff_size << ");\n";
262262 // gate results
263263 size_t hs_size = seq_length * num_directions * batch_size * fAttrHiddenSize;
264- out << "std::vector<" << fType << "> fVec_" << opName << "_input_gate = std::vector<" << fType << ">(" << hs_size << ");\n";
265- out << "std::vector<" << fType << "> fVec_" << opName << "_output_gate = std::vector<" << fType << ">(" << hs_size << ");\n";
266- out << "std::vector<" << fType << "> fVec_" << opName << "_cell_gate = std::vector<" << fType << ">(" << hs_size << ");\n";
264+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_input_gate = std::vector<" << fType << ">(" << hs_size << ");\n";
265+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_output_gate = std::vector<" << fType << ">(" << hs_size << ");\n";
266+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_cell_gate = std::vector<" << fType << ">(" << hs_size << ");\n";
267267 if (fAttrInputForget == 0)
268- out << "std::vector<" << fType << "> fVec_" << opName << "_forget_gate = std::vector<" << fType << ">(" << hs_size << ");\n";
268+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_forget_gate = std::vector<" << fType << ">(" << hs_size << ");\n";
269269 // cell state
270- out << "std::vector<" << fType << "> fVec_" << opName << "_cell_state = std::vector<" << fType << ">(" << hs_size << ");\n";
271- out << "std::vector<" << fType << "> fVec_" << opName << "_new_cell_state = std::vector<" << fType << ">(" << hs_size << ");\n";
270+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_cell_state = std::vector<" << fType << ">(" << hs_size << ");\n";
271+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_new_cell_state = std::vector<" << fType << ">(" << hs_size << ");\n";
272272 // hiddden state
273273 if (fAttrLayout != 0 || fNY.empty()) {
274- out << "std::vector<" << fType << "> fVec_" << opName << "_hidden_state = std::vector<" << fType << ">(" << hs_size << ");\n";
274+ out << "mutable std::vector<" << fType << "> fVec_" << opName << "_hidden_state = std::vector<" << fType << ">(" << hs_size << ");\n";
275275 }
276276
277277 out << "\n";
@@ -313,11 +313,11 @@ auto ROperator_LSTM<T>::Generate(std::string OpName)
313313 // Set the initial hidden state
314314 if (!fNInitial_h.empty()) {
315315 if (fAttrLayout == 0) {
316- out << SP << fType << " *" << OpName << "_initial_hidden_state = " << " tensor_"
316+ out << SP << fType << " const *" << OpName << "_initial_hidden_state = " << " tensor_"
317317 << fNInitial_h << ";\n";
318318 } else {
319319 if (fUseSession)
320- out << SP << fType << " * " << OpName << "_initial_hidden_state = this->fVec_" << OpName
320+ out << SP << fType << " const * " << OpName << "_initial_hidden_state = this->fVec_" << OpName
321321 << "_initial_hidden_state.data();\n";
322322 else
323323 out << SP << fType << " " << OpName << "_initial_hidden_state[" << num_directions * batch_size *
@@ -339,11 +339,11 @@ auto ROperator_LSTM<T>::Generate(std::string OpName)
339339 // Set the initial cell state
340340 if (!fNInitial_c.empty()) {
341341 if (fAttrLayout == 0) {
342- out << SP << fType << " *" << OpName << "_initial_cell_state = " << " tensor_"
342+ out << SP << fType << " const *" << OpName << "_initial_cell_state = " << " tensor_"
343343 << fNInitial_c << ";\n";
344344 } else {
345345 if (fUseSession)
346- out << SP << fType << " * " << OpName << "_initial_cell_state = this->fVec_" << OpName
346+ out << SP << fType << " const * " << OpName << "_initial_cell_state = this->fVec_" << OpName
347347 << "_initial_cell_state.data();\n";
348348 else
349349 out << SP << fType << " " << OpName << "_initial_cell_state[" << num_directions * batch_size *
0 commit comments