GRU网络代码实现
时间: 2025-03-10 20:10:28 浏览: 31
### GRU 神经网络代码实现
#### PyTorch 实现 GRU 网络
在 PyTorch 中创建并使用 GRU 模型相对简单。下面是一个具体的例子,展示了如何定义、初始化以及运行一个两层的 GRU 模型[^3]。
```python
import torch
import torch.nn as nn
class GRUNet(nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim, n_layers, drop_prob=0.2):
super(GRUNet, self).__init__()
self.hidden_dim = hidden_dim
self.n_layers = n_layers
self.gru = nn.GRU(input_dim, hidden_dim, n_layers, batch_first=True, dropout=drop_prob)
self.fc = nn.Linear(hidden_dim, output_dim)
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):
weight = next(self.parameters()).data
hidden = weight.new(self.n_layers, batch_size, self.hidden_dim).zero_()
return hidden
```
这段代码定义了一个名为 `GRUNet` 的类,该类继承自 `nn.Module` 并实现了前向传播方法 `forward()` 和隐藏状态初始化函数 `init_hidden()`。此模型接受输入维度 (`input_dim`)、隐含单元数量 (`hidden_dim`)、输出类别数 (`output_dim`) 及层数 (`n_layers`) 参数作为配置项。
对于 TensorFlow 来说,构建类似的 GRU 结构同样直观:
#### TensorFlow 实现 GRU 网络
以下是基于 Keras API 构建的一个简单的多层 GRU 模型的例子[^5]。
```python
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Embedding, GRU
model = Sequential()
model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim))
model.add(GRU(units=rnn_units,
activation='relu',
recurrent_activation='sigmoid'))
model.add(Dropout(rate=dropout_rate))
model.add(Dense(output_dim))
# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy')
```
这里展示的是一个顺序模型 (Sequential),其中包含了嵌入层用于词向量化处理;接着是单个 GRU 层负责捕捉序列特征;最后通过全连接层映射到目标空间完成分类任务或其他下游作业。
值得注意的是,在实际应用中可能还需要考虑更多细节,比如批次大小的选择、学习率调整策略等超参数设置,这些都会影响最终的效果表现。
阅读全文
相关推荐


















