--- license: mit --- # test rnn The Models in test rnn is for [Huggingface Candle PR#2542](https://github.com/huggingface/candle/pull/2542) as example test cases. Test models are refered to Pytorch [LSTM](https://pytorch.org/docs/stable/generated/torch.nn.LSTM.html) and [GRU](https://pytorch.org/docs/stable/generated/torch.nn.GRU.html). Test models are generated by the following codes: - lstm_test.pt: A simple LSTM model with 1 layer. ```python import torch import torch.nn as nn rnn = nn.LSTM(10, 20, num_layers=1, batch_first=True) input = torch.randn(5, 3, 10) output, (hn, cn) = rnn(input) state_dict = rnn.state_dict() state_dict['input'] = input state_dict['output'] = output.contiguous() state_dict['hn'] = hn state_dict['cn'] = cn torch.save(state_dict, "lstm_test.pt") ``` - gru_test.pt: A simple GRU model with 1 layer. ```python import torch import torch.nn as nn rnn = nn.GRU(10, 20, num_layers=1, batch_first=True) input = torch.randn(5, 3, 10) output, hn = rnn(input) state_dict = rnn.state_dict() state_dict['input'] = input state_dict['output'] = output.contiguous() state_dict['hn'] = hn torch.save(state_dict, "gru_test.pt") ``` - bi_lstm_test.pt: A bidirectional LSTM model with 1 layer. ```python import torch import torch.nn as nn rnn = nn.LSTM(10, 20, num_layers=1, bidirectional=True, batch_first=True) input = torch.randn(5, 3, 10) output, (hn, cn) = rnn(input) state_dict = rnn.state_dict() state_dict['input'] = input state_dict['output'] = output.contiguous() state_dict['hn'] = hn state_dict['cn'] = cn torch.save(state_dict, "bi_lstm_test.pt") ``` - bi_gru_test.pt: A bidirectional GRU model with 1 layer. ```python import torch import torch.nn as nn rnn = nn.GRU(10, 20, num_layers=1, bidirectional=True, batch_first=True) input = torch.randn(5, 3, 10) output, hn = rnn(input) state_dict = rnn.state_dict() state_dict['input'] = input state_dict['output'] = output.contiguous() state_dict['hn'] = hn torch.save(state_dict, "bi_gru_test.pt") ``` - lstm_nlayer_test.pt: A LSTM model with 3 layers. ```python import torch import torch.nn as nn rnn = nn.LSTM(10, 20, num_layers=3, batch_first=True) input = torch.randn(5, 3, 10) output, (hn, cn) = rnn(input) state_dict = rnn.state_dict() state_dict['input'] = input state_dict['output'] = output.contiguous() state_dict['hn'] = hn state_dict['cn'] = cn torch.save(state_dict, "lstm_nlayer_test.pt") ``` - bi_lstm_nlayer_test.pt: A bidirectional LSTM model with 3 layers. ```python import torch import torch.nn as nn rnn = nn.LSTM(10, 20, num_layers=3, bidirectional=True, batch_first=True) input = torch.randn(5, 3, 10) output, (hn, cn) = rnn(input) state_dict = rnn.state_dict() state_dict['input'] = input state_dict['output'] = output.contiguous() state_dict['hn'] = hn state_dict['cn'] = cn torch.save(state_dict, "bi_lstm_nlayer_test.pt") ``` - gru_nlayer_test.pt: A GRU model with 3 layers. ```python import torch import torch.nn as nn rnn = nn.GRU(10, 20, num_layers=3, batch_first=True) input = torch.randn(5, 3, 10) output, hn = rnn(input) state_dict = rnn.state_dict() state_dict['input'] = input state_dict['output'] = output.contiguous() state_dict['hn'] = hn torch.save(state_dict, "gru_nlayer_test.pt") ``` - bi_gru_nlayer_test.pt: A bidirectional GRU model with 3 layers. ```python import torch import torch.nn as nn rnn = nn.GRU(10, 20, num_layers=3, bidirectional=True, batch_first=True) input = torch.randn(5, 3, 10) output, hn = rnn(input) state_dict = rnn.state_dict() state_dict['input'] = input state_dict['output'] = output.contiguous() state_dict['hn'] = hn torch.save(state_dict, "bi_gru_nlayer_test.pt") ```