GRU模型怎么代码实现
时间: 2023-10-07 12:05:07 浏览: 43
以下是一个简单的 GRU 模型的代码实现,使用 PyTorch 框架:
```
import torch.nn as nn
class GRUModel(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, output_size):
super(GRUModel, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.gru = nn.GRU(input_size, hidden_size, num_layers, batch_first=True)
self.fc = nn.Linear(hidden_size, output_size)
def forward(self, x, h):
out, h = self.gru(x, h)
out = self.fc(out[:, -1, :])
return out, h
def init_hidden(self, batch_size):
return torch.zeros(self.num_layers, batch_size, self.hidden_size)
```
在这个简单的 GRU 模型中,我们定义了一个 `GRUModel` 类,它继承自 `nn.Module` 类。在 `__init__` 方法中,我们初始化了模型中的 GRU 层和全连接层,并将隐藏状态的大小、层数和输出大小作为参数传递。
在 `forward` 方法中,我们首先将输入张量 `x` 和隐藏状态张量 `h` 传递给 GRU 层,得到输出张量 `out` 和最终的隐藏状态张量 `h`。然后,我们将 `out` 张量的最后一个时间步的输出传递给全连接层,并返回输出张量和最终的隐藏状态张量。
最后,我们还定义了一个 `init_hidden` 方法,用于初始化隐藏状态张量。这个方法接受一个批次大小作为输入,并返回一个由零组成的张量,维度为 `(num_layers, batch_size, hidden_size)`。