diff --git a/testdata/dnn/onnx/data/input_lstm_init_h0_c0_0.npy b/testdata/dnn/onnx/data/input_lstm_init_h0_c0_0.npy new file mode 100644 index 000000000..9a5664908 Binary files /dev/null and b/testdata/dnn/onnx/data/input_lstm_init_h0_c0_0.npy differ diff --git a/testdata/dnn/onnx/data/input_lstm_init_h0_c0_1.npy b/testdata/dnn/onnx/data/input_lstm_init_h0_c0_1.npy new file mode 100644 index 000000000..0374ce93d Binary files /dev/null and b/testdata/dnn/onnx/data/input_lstm_init_h0_c0_1.npy differ diff --git a/testdata/dnn/onnx/data/input_lstm_init_h0_c0_2.npy b/testdata/dnn/onnx/data/input_lstm_init_h0_c0_2.npy new file mode 100644 index 000000000..0a6f757f6 Binary files /dev/null and b/testdata/dnn/onnx/data/input_lstm_init_h0_c0_2.npy differ diff --git a/testdata/dnn/onnx/data/output_lstm_init_h0_c0.npy b/testdata/dnn/onnx/data/output_lstm_init_h0_c0.npy new file mode 100644 index 000000000..6ff51f60b Binary files /dev/null and b/testdata/dnn/onnx/data/output_lstm_init_h0_c0.npy differ diff --git a/testdata/dnn/onnx/generate_onnx_models.py b/testdata/dnn/onnx/generate_onnx_models.py index 50141f4fe..7c23a7674 100644 --- a/testdata/dnn/onnx/generate_onnx_models.py +++ b/testdata/dnn/onnx/generate_onnx_models.py @@ -1145,7 +1145,33 @@ def forward(self, x): lstm = LSTM(features, hidden, batch, bidirectional=True) save_data_and_model("lstm_bidirectional", input, lstm) +class LSTM_hidden_state_inputs(nn.Module): + def __init__(self, features, hidden, batch, num_layers=1, bidirectional=False): + super(LSTM_hidden_state_inputs, self).__init__() + self.lstm = nn.LSTM(features, hidden, num_layers, bidirectional=bidirectional) + + def forward(self, x, h, c): + return self.lstm(x, (h, c))[0] + +batch = 1 +features = 16 +hidden = 8 +seq_len = 2 +num_layers = 1 +bidirectional = False + +lstm = LSTM_hidden_state_inputs( + features, + hidden, + batch, + num_layers=num_layers, + bidirectional=bidirectional +) +input = torch.randn(seq_len, batch, features) +h0 = torch.randn(num_layers + int(bidirectional), batch, hidden) +c0 = torch.randn(num_layers + int(bidirectional), batch, hidden) +save_data_and_model_multy_inputs("lstm_init_h0_c0", lstm, input, h0, c0, export_params=True) class HiddenLSTM(nn.Module): def __init__(self, input_size, hidden_size, num_layers=1, is_bidirectional=False): diff --git a/testdata/dnn/onnx/models/lstm_init_h0_c0.onnx b/testdata/dnn/onnx/models/lstm_init_h0_c0.onnx new file mode 100644 index 000000000..09b44aa62 Binary files /dev/null and b/testdata/dnn/onnx/models/lstm_init_h0_c0.onnx differ