"PyTorch搭建神经网络实现回归和分类示例详解"。

需积分: 0 1 下载量 7 浏览量 更新于2024-04-03 收藏 134KB PDF 举报
rch(tensor)格式转换回 numpy(array)格式。 二、简单回归模型搭建 在 PyTorch 中构建简单的神经网络模型非常简单,只需要定义一个类,继承自 nn.Module,并实现其中的 __init__ 和 forward 方法即可。下面是一个简单的回归模型的搭建实例: ```python import torch import torch.nn as nn import torch.optim as optim # 定义神经网络模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(1, 10) self.fc2 = nn.Linear(10, 1) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.fc2(x) return x # 准备数据 x_data = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1) y_data = x_data.pow(2) + 0.2 * torch.rand(x_data.size()) # 构建模型及优化器 net = Net() criterion = nn.MSELoss() optimizer = optim.SGD(net.parameters(), lr=0.2) # 训练模型 for epoch in range(100): prediction = net(x_data) loss = criterion(prediction, y_data) optimizer.zero_grad() loss.backward() optimizer.step() ``` 以上代码中,定义了一个简单的神经网络模型Net,包含了两个全连接层,然后准备了一些数据进行训练,定义了损失函数和优化器,最后进行了训练。 三、简单分类模型搭建 同样地,在 PyTorch 中构建简单的分类模型也非常简单,只需要按照相同的步骤定义一个类并实现其中的 __init__ 和 forward 方法。下面是一个简单的分类模型的搭建实例: ```python import torch import torch.nn as nn import torch.optim as optim # 定义神经网络模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(2, 10) self.fc2 = nn.Linear(10, 2) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.fc2(x) return x # 准备数据 x_data = torch.tensor([[1.0, 0.0], [0.0, 1.0], [0.0, 0.0], [1.0, 1.0]]) y_data = torch.tensor([[1, 0], [0, 1], [1, 0], [0, 1]]) # 构建模型及优化器 net = Net() criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.2) # 训练模型 for epoch in range(100): prediction = net(x_data) loss = criterion(prediction, y_data) optimizer.zero_grad() loss.backward() optimizer.step() ``` 以上代码中,定义了一个简单的神经网络模型Net,包含了两个全连接层,然后准备了一些数据进行训练,定义了交叉熵损失函数和优化器,最后进行了训练。 通过以上示例,读者可以了解到在PyTorch上搭建简单神经网络实现回归和分类的具体步骤,同时也可以根据自己的需求进行调整和扩展以实现更复杂的功能。希望本文内容对读者有所帮助,谢谢!