当前位置: 首页 > news >正文

[paddle] 非线性拟合问题的训练

利用paddlepaddle建立神经网络,模拟有限个数据的非线性拟合

本文仍然考虑 f ( x ) = sin ⁡ ( x ) x f(x)=\frac{\sin(x)}{x} f(x)=xsin(x) 函数在区间 [-10,10] 上固定数据的拟合。

import paddle
import paddle.nn as nn
import numpy as np
import matplotlib.pyplot as plt# 设置随机种子以确保结果的可重复性
paddle.seed(1)# 生成数据集
x_data = (np.random.rand(500) * 20 - 10).astype('float32')  # 生成500个随机x值,范围在-10到10之间
y_data = np.sin(x_data) / x_data  # 生成y值
y_data = y_data.reshape(-1, 1)  # 将y_data转换为二维数组# 定义模型,一个具有2个隐藏层的多层感知器
class MyModel(nn.Layer):def __init__(self):super(MyModel, self).__init__()self.hidden1 = nn.Linear(in_features=1, out_features=50)self.bn = nn.BatchNorm1D(num_features=50)self.hidden2 = nn.Linear(in_features=50, out_features=1)def forward(self, x):x = paddle.tanh(self.hidden1(x))x = self.bn(x)x = self.hidden2(x)return xmodel = MyModel()# 定义损失函数
loss_fn = nn.MSELoss()# 设置优化器
optimizer = paddle.optimizer.Adam(learning_rate=0.01, parameters=model.parameters())# 训练数据
train_data = paddle.to_tensor(x_data).unsqueeze(-1), paddle.to_tensor(y_data)# 训练模型
epochs = 1000
for epoch in range(1, epochs + 1):loss = loss_fn(model(train_data[0]), train_data[1])loss.backward()optimizer.step()optimizer.clear_grad()if epoch % 100 == 0:print(f'Epoch {epoch}: Loss = {loss.numpy()}')# 使用训练好的模型进行预测
y_pred = model(train_data[0]).numpy()# 可视化结果
plt.scatter(x_data, y_data, label='True')
plt.scatter(x_data, y_pred, label='Predicted')
plt.legend()
plt.show()

在这里插入图片描述

http://www.lryc.cn/news/514948.html

相关文章:

  • 每日一学——监控工具(Grafana)
  • FreshTomato 路由器固件常见配置以及踩坑记录
  • ubuntu 使用samba与windows共享文件[注意权限配置]
  • 使用 httputils + chronicle-bytes 实现金融级 java rpc
  • 软件工程期末复习(一)
  • element ui 组件 时间选择器出现转换问题的解决办法
  • 报错:websocket注入为null,已解决!
  • .e01, ..., .e0n的分卷压缩包怎么解压
  • 四年前的计划,青涩但坚韧
  • 【人工智能】人工智能与大模型
  • 小波与傅里叶变换在去噪效果上的对比分析-附Matlab源程序
  • Luma AI 简单几步生成视频
  • AfuseKt1.4.4 | 刮削视频播放器,支持阿里云盘和自动海报墙
  • 深入理解计算机中的补码、反码、原码
  • Scratch教学作品 | 白水急流——急流勇进,挑战反应极限! ‍♂️
  • Px4 V2.4.8飞控Mavlink命令控制说明
  • Linux(Ubuntu24.04)源码编译安装VTK7.1.1记录
  • 【Go学习】-01-4-项目管理及协程
  • ES_如何设置ElasticSearch 8.0版本的匿名访问以及https_http模式的互相切换
  • PySide6 SQLite3 做的 电脑组装报价系统
  • 逻辑回归(Logistic Regression) —— 机器学习中的经典分类算法
  • 【数据库系统概论】数据库完整性与触发器--复习
  • 【机器学习:一、机器学习简介】
  • 网关的主要类型和它们的特点
  • NDA:Non-Disclosure Agreement
  • 方正畅享全媒体新闻采编系统 imageProxy.do 任意文件读取漏洞复现(附脚本)
  • OpenHarmony通过挂载镜像来修改镜像内容,RK3566鸿蒙开发板演示
  • 代理模式和适配器模式有什么区别
  • 2025年度全国会计专业技术资格考试 (甘肃考区)报名公告
  • ansible-playbook 搭建JDK