基于pytorch的天气预测
时间: 2023-12-15 15:32:19 浏览: 121
基于Pytorch全连接神经网络优化器Adam实现天气温度的回归预测仿真源码+数据(高分项目).rar
5星 · 资源好评率100%
以下是基于Pytorch的天气预测的示例代码:
```python
import torch
import torch.nn as nn
import numpy as np
# 定义神经网络模型
class WeatherNet(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(WeatherNet, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(hidden_size, output_size)
def forward(self, x):
out = self.fc1(x)
out = self.relu(out)
out = self.fc2(out)
return out
# 定义训练数据
input_features = np.array([[10, 20, 30], [20, 30, 40], [30, 40, 50], [40, 50, 60], [50, 60, 70], [60, 70, 80], [70, 80, 90], [80, 90, 100]], dtype=np.float32)
labels = np.array([[40], [50], [60], [70], [80], [90], [100], [110]], dtype=np.float32)
# 定义超参数
input_size = 3
hidden_size = 4
output_size = 1
learning_rate = 0.01
num_epochs = 1000
# 定义模型、损失函数和优化器
my_nn = WeatherNet(input_size, hidden_size, output_size)
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(my_nn.parameters(), lr=learning_rate)
# 训练模型
for epoch in range(num_epochs):
inputs = torch.from_numpy(input_features)
targets = torch.from_numpy(labels)
optimizer.zero_grad()
outputs = my_nn(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# 预测新数据
x = torch.tensor([[90, 100, 110]], dtype=torch.float)
predict = my_nn(x).data.numpy()
print("Predicted temperature for next day:", predict[0][0])
```
该示例代码中,我们定义了一个全连接神经网络模型,用于预测未来一天的温度。我们使用了8个样本数据进行训练,每个样本包含3个特征值(前三天的温度),以及一个标签值(第四天的温度)。我们使用均方误差作为损失函数,使用Adam优化器进行优化。在训练完成后,我们使用训练好的模型对新数据进行预测,输出预测的温度值。
阅读全文