PyTorch实战:全连接网络拟合简单函数
创作时间:
2025-01-21 18:42:07
作者:
@小白创作中心
PyTorch实战:全连接网络拟合简单函数
使用神经网络拟合简单函数是理解神经网络工作原理的一个很好的起点。本文将通过一个具体的实例,展示如何使用PyTorch实现全连接网络来拟合二次函数y = x^2。
代码实现
下面是完整的代码示例:
import torch
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
# 生成数据
x = torch.linspace(-10, 10, 100).unsqueeze(1)
y = x**2
# 定义全连接网络
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(1, 128)
self.fc2 = nn.Linear(128, 64)
self.fc3 = nn.Linear(64, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
x = self.fc3(x)
return x
# 实例化模型、损失函数和优化器
model = SimpleNN()
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)
# 训练模型
num_epochs = 1000
for epoch in range(num_epochs):
model.train()
optimizer.zero_grad()
outputs = model(x)
loss = criterion(outputs, y)
loss.backward()
optimizer.step()
if (epoch+1) % 100 == 0:
print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')
# 预测
model.eval()
predicted = model(x).detach()
# 可视化结果
plt.plot(x.numpy(), y.numpy(), 'ro', label='Original data')
plt.plot(x.numpy(), predicted.numpy(), 'b-', label='Fitted line')
plt.legend()
plt.show()
代码解析
这段代码的具体步骤如下:
- 生成数据:创建输入数据 ( x ) 和对应的标签 ( y )。
- 定义网络结构:创建一个简单的全连接神经网络,包括三层线性层。
- 实例化模型、损失函数和优化器:使用均方误差损失函数和Adam优化器。
- 训练模型:在1000个epoch上训练模型,并在每100个epoch打印一次损失。
- 预测和可视化:使用训练好的模型进行预测,并将原始数据和拟合结果进行可视化。
运行这段代码后,你将看到一个图形,其中红点表示原始的二次函数数据,蓝线表示神经网络拟合的结果。
热门推荐
高三冲刺最后阶段常见的提分方法
智能机器人客服系统的知识库如何维护和更新?
公安数字化:重塑警务新生态
天体物理学家如何测量宇宙的真实大小?
波西米亚狂想曲:一首关于生命与救赎的摇滚史诗
不痛不痒就没事?娃身上的5种肉疙瘩,3种不能抓,会传染
买了农村宅基地土地怎样确权
今年暑期游,有点不一样!
规模超170亿元 3月首批上市ETF“定档”
猫咪鼻子有分泌物,还不断打喷嚏?从1个或2个鼻孔有分泌物来判断
项目组合管理特点:如何优化您的项目组合以提升效率?
小腿痒是怎么回事?医生专业解析7大可能原因
明朝军队的棉甲,从明初使用到明末,并被后金所沿用
如何系统学习潮汕话:从语音到实践的全方位指南
软件外观设计有专利保护吗
打破禁忌:让我们谈谈死亡
韩军接装"头号盾舰",排水量对标055,号称还能打卫星
日本要造“超级军舰”,美制技术堆砌难掩性能短板,055仍占优?
如何根据自己的体型,去正确安排你的健身训练?
英文名字大全:精选流行英文名字及命名背后的文化意蕴
孩子总粘人?育儿专家教你如何培养孩子独立玩耍的能力!
医疗事故赔偿协议书:明确各方权利和义务
与猎头签劳动合同违法吗?全面解析劳动法相关问题
术后康复计划,个性化路径走向快速恢复
青岛活动板房安装注意事项:避坑指南一次看懂
如何通过自我反思提升管理能力
企业文化培训新攻略:如何让新员工快速融入企业大家庭?
《江城子·老夫聊发少年狂》苏轼宋词注释翻译赏析
碳资产管理:从成本到机会的转变
MES系统全自动化生产线:实现智能制造的关键技术