帮我写一个搭建pytorch神经网络进行气温预测的代码
时间: 2023-08-31 07:37:27 浏览: 93
### 回答1:
好的,以下是一个简单的搭建pytorch神经网络进行气温预测的代码:
```
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
# 准备数据
x_train = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]], dtype=np.float32)
y_train = np.array([[4.5], [7.5], [10.5], [13.5]], dtype=np.float32)
# 定义模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(3, 10)
self.fc2 = nn.Linear(10, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
net = Net()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(net.parameters(), lr=.01)
# 训练模型
for epoch in range(100):
inputs = torch.from_numpy(x_train)
labels = torch.from_numpy(y_train)
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
if epoch % 100 == :
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))
# 预测
x_test = np.array([[13, 14, 15], [16, 17, 18]], dtype=np.float32)
with torch.no_grad():
inputs = torch.from_numpy(x_test)
outputs = net(inputs)
print(outputs)
```
这个代码可以用来预测气温,其中x_train是训练数据,y_train是训练数据对应的标签,Net是一个简单的神经网络模型,criterion是损失函数,optimizer是优化器,训练过程中会输出损失值,最后用训练好的模型预测x_test对应的输出。
### 回答2:
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
# 准备数据
temperature_celsius = np.array([-5, 0, 10, 20, 30, 35, 40], dtype=np.float32)
temperature_fahrenheit = np.array([-23, 32, 50, 68, 86, 95, 104], dtype=np.float32)
# 转换为张量
x_train = torch.from_numpy(temperature_celsius).unsqueeze(1)
y_train = torch.from_numpy(temperature_fahrenheit).unsqueeze(1)
# 定义神经网络模型
class TemperaturePredictor(nn.Module):
def __init__(self):
super(TemperaturePredictor, self).__init__()
self.linear = nn.Linear(1, 1)
def forward(self, x):
return self.linear(x)
model = TemperaturePredictor()
# 定义损失函数和优化器
loss_function = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练模型
num_epochs = 1000
for epoch in range(num_epochs):
# 前向传播
outputs = model(x_train)
loss = loss_function(outputs, y_train)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 每隔100个epoch打印一次loss
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# 使用模型进行预测
x_test = torch.tensor([[15]])
predicted = model(x_test)
print('预测结果: {:.2f}华氏度'.format(predicted.item()))
### 回答3:
import torch
import torch.nn as nn
import torch.optim as optim
# 定义神经网络模型
class TempPredictionModel(nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim):
super(TempPredictionModel, self).__init__()
self.hidden_layer = nn.Linear(input_dim, hidden_dim)
self.output_layer = nn.Linear(hidden_dim, output_dim)
def forward(self, x):
x = torch.relu(self.hidden_layer(x))
x = self.output_layer(x)
return x
# 设置模型参数和训练参数
input_dim = 1 # 输入特征维度为1,即气温
hidden_dim = 10 # 隐藏层维度设为10
output_dim = 1 # 输出维度为1,即预测结果为一个实数
learning_rate = 0.01 # 学习率
num_epochs = 1000 # 训练次数
# 准备训练数据
# 假设已经有了一个包含多个气温数据的训练集train_data
# train_data的shape为 (num_samples, input_dim),num_samples为训练样本数量
# 将训练数据转化为Tensor
train_data = torch.tensor(train_data, dtype=torch.float32)
# 创建模型实例
model = TempPredictionModel(input_dim, hidden_dim, output_dim)
# 定义损失函数
criterion = nn.MSELoss()
# 定义优化器
optimizer = optim.SGD(model.parameters(), lr=learning_rate)
# 模型训练
for epoch in range(num_epochs):
# 前向传播
outputs = model(train_data)
# 计算损失
loss = criterion(outputs, train_data)
# 反向传播及优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 打印训练过程
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# 模型训练完成,可以用于预测了
# 假设已经有了一个包含多个待预测的气温数据的测试集test_data
# test_data的shape为 (num_samples, input_dim),num_samples为待预测样本数量
# 将测试数据转化为Tensor
test_data = torch.tensor(test_data, dtype=torch.float32)
# 开始预测
predicted_temperatures = model(test_data)
# 将预测结果从Tensor转化为numpy数组
predicted_temperatures = predicted_temperatures.detach().numpy()
# 打印预测结果
for i in range(len(predicted_temperatures)):
print('真实气温: {:.1f}, 预测气温: {:.1f}'.format(test_data[i], predicted_temperatures[i]))
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)