请用pytorch定义一个三层级联神经网络和一个三层LSTM神经网络
时间: 2023-08-23 22:07:49 浏览: 256
如何用PyTorch实现递归神经网络?
下面是使用PyTorch定义一个三层级联神经网络(Feedforward Neural Network)和一个三层LSTM神经网络的示例代码:
```python
import torch
import torch.nn as nn
# 定义三层级联神经网络
class FeedforwardNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(FeedforwardNN, self).__init__()
self.layer1 = nn.Linear(input_size, hidden_size)
self.layer2 = nn.Linear(hidden_size, hidden_size)
self.layer3 = nn.Linear(hidden_size, output_size)
def forward(self, x):
x = torch.relu(self.layer1(x))
x = torch.relu(self.layer2(x))
x = self.layer3(x)
return x
# 定义三层LSTM神经网络
class LSTMNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(LSTMNN, self).__init__()
self.lstm = nn.LSTM(input_size, hidden_size, num_layers=3, batch_first=True)
self.fc = nn.Linear(hidden_size, output_size)
def forward(self, x):
_, (h_n, _) = self.lstm(x)
x = h_n[-1]
x = self.fc(x)
return x
# 示例使用
input_size = 10
hidden_size = 20
output_size = 5
# 创建一个输入张量
input_tensor = torch.randn(1, 100, input_size) # 假设输入序列长度为100
# 创建级联神经网络实例
ffnn = FeedforwardNN(input_size, hidden_size, output_size)
# 前向传播
output_ffnn = ffnn(input_tensor)
print("Feedforward Neural Network output:", output_ffnn.shape)
# 创建LSTM神经网络实例
lstmnn = LSTMNN(input_size, hidden_size, output_size)
# 前向传播
output_lstmnn = lstmnn(input_tensor)
print("LSTM Neural Network output:", output_lstmnn.shape)
```
在这个示例中,我们首先定义了一个三层级联神经网络(`FeedforwardNN`),它由三个线性层组成。然后,我们定义了一个三层LSTM神经网络(`LSTMNN`),它由一个LSTM层和一个线性层组成。
我们使用示例输入张量 `input_tensor` 进行前向传播,并打印输出的形状。需要注意的是,输入张量的形状为 `(batch_size, sequence_length, input_size)`,其中 `batch_size` 表示批量大小,`sequence_length` 表示输入序列的长度,`input_size` 表示输入特征的维度。
希望这个示例对你有所帮助!如果还有其他问题,请随时提问。
阅读全文