注意力机制加gru代码
时间: 2023-05-19 20:04:28 浏览: 107
以下是注意力机制加GRU的代码示例:
```python
import torch
import torch.nn as nn
class AttentionGRU(nn.Module):
def __init__(self, input_size, hidden_size, num_layers=1, dropout=0.0):
super(AttentionGRU, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.dropout = dropout
self.gru = nn.GRU(input_size, hidden_size, num_layers, batch_first=True, dropout=dropout, bidirectional=True)
self.attention = nn.Linear(hidden_size * 2, 1)
def forward(self, input):
# input shape: (batch_size, seq_len, input_size)
batch_size, seq_len, input_size = input.size()
# output shape: (batch_size, seq_len, hidden_size * 2)
output, hidden = self.gru(input)
# attention_weights shape: (batch_size, seq_len, 1)
attention_weights = self.attention(output).squeeze(-1)
attention_weights = torch.softmax(attention_weights, dim=-1)
# context shape: (batch_size, hidden_size * 2)
context = torch.sum(output * attention_weights.unsqueeze(-1), dim=1)
return context, hidden
```
希望这个代码示例能够帮助你!
阅读全文