深度学习双向gru模型代码
时间: 2023-09-24 19:11:39 浏览: 144
基于深度学习的gru分类.代码数据
5星 · 资源好评率100%
下面是一个基于 PyTorch 实现的双向 GRU 模型的代码:
```python
import torch
import torch.nn as nn
class BiGRU(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, output_size):
super(BiGRU, 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, bidirectional=True)
self.fc = nn.Linear(hidden_size*2, output_size)
def forward(self, x):
h0 = torch.zeros(self.num_layers*2, x.size(0), self.hidden_size).to(device) # 初始化隐层状态
out, _ = self.gru(x, h0)
out = self.fc(out[:, -1, :])
return out
```
其中,`input_size` 表示输入数据的特征维度,`hidden_size` 表示 GRU 模型的隐藏层维度,`num_layers` 表示 GRU 模型的层数,`output_size` 表示输出数据的维度。
在 `forward` 方法中,首先使用 `torch.zeros` 函数初始化隐层状态 `h0`,然后将输入数据 `x` 和隐层状态 `h0` 传入 `nn.GRU` 中进行计算,得到输出 `out`。最后,将 `out` 的最后一个时间步的输出传入全连接层 `nn.Linear` 中,得到最终的输出结果。由于是双向 GRU 模型,所以 `out` 的维度为 `(batch_size, sequence_length, hidden_size*2)`,在传入全连接层之前需要取最后一个时间步的输出,因此使用 `out[:, -1, :]` 提取最后一个时间步的输出。
阅读全文