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

360下载志鸿优化网官网

360下载,志鸿优化网官网,邯郸网络宣传公司,大兴智能网站建设哪家好一、概述 本代码实现了一个简单的神经网络进行线性回归任务。通过生成包含噪声的线性数据集,定义一个简单的神经网络类,使用梯度下降算法训练网络以拟合数据,并最终通过可视化展示原始数据、真实线性关系以及模型的预测结果。 二、依赖库 …

一、概述

本代码实现了一个简单的神经网络进行线性回归任务。通过生成包含噪声的线性数据集,定义一个简单的神经网络类,使用梯度下降算法训练网络以拟合数据,并最终通过可视化展示原始数据、真实线性关系以及模型的预测结果。

二、依赖库

  1. numpy:用于数值计算,包括生成数组、进行随机数操作、执行数学运算等。
  2. matplotlib.pyplot:用于数据可视化,绘制散点图和折线图以展示数据和模型的预测结果。

三、代码详解

1. 生成数据集

python

np.random.seed(42)
x = np.linspace(-10, 10, 100)
y = x + np.random.normal(0, 1, x.shape)  # 添加噪声

  • np.random.seed(42):设置随机数种子,确保每次运行代码时生成的随机数序列相同,从而使结果可复现。
  • np.linspace(-10, 10, 100):生成一个包含 100 个元素的一维数组x,元素均匀分布在 - 10 到 10 之间。
  • x + np.random.normal(0, 1, x.shape):生成因变量y,它基于真实的线性关系y = x,并添加了均值为 0、标准差为 1 的高斯噪声。np.random.normal(0, 1, x.shape)生成与x形状相同的随机噪声数组。

2. 定义神经网络(线性回归)

python

class SimpleNN:def __init__(self):self.w = np.random.randn()  # 权重self.b = np.random.randn()  # 偏置def forward(self, x):return self.w * x + self.b  # 前向传播def loss(self, y_true, y_pred):return np.mean((y_true - y_pred) **2)  # 均方误差def gradient(self, x, y_true, y_pred):dw = -2 * np.mean(x * (y_true - y_pred))  # 权重的梯度db = -2 * np.mean(y_true - y_pred)       # 偏置的梯度return dw, dbdef train(self, x, y, lr=0.01, epochs=1000):for epoch in range(epochs):y_pred = self.forward(x)dw, db = self.gradient(x, y, y_pred)self.w -= lr * dw  # 更新权重self.b -= lr * db  # 更新偏置if (epoch + 1) % 100 == 0:print(f'Epoch [{epoch+1}/{epochs}], Loss: {self.loss(y, y_pred):.4f}')

  • __init__方法:初始化神经网络的权重self.w和偏置self.b,使用np.random.randn()生成随机的初始值。
  • forward方法:实现前向传播,根据输入x、权重self.w和偏置self.b计算输出y_pred,即y_pred = self.w * x + self.b
  • loss方法:计算预测值y_pred和真实值y_true之间的均方误差(MSE),公式为np.mean((y_true - y_pred) ** 2)
  • gradient方法:计算权重self.w和偏置self.b的梯度。dw是权重的梯度,计算公式为-2 * np.mean(x * (y_true - y_pred))db是偏置的梯度,计算公式为-2 * np.mean(y_true - y_pred)
  • train方法:使用梯度下降算法训练神经网络。在指定的epochs(训练轮数)内,每次迭代进行前向传播计算预测值y_pred,然后计算梯度dwdb,根据学习率lr更新权重self.w和偏置self.b。每 100 轮打印一次当前轮数和损失值。

3. 训练模型

python

model = SimpleNN()
model.train(x, y, lr=0.01, epochs=1000)

  • SimpleNN():创建一个SimpleNN类的实例model
  • model.train(x, y, lr=0.01, epochs=1000):调用modeltrain方法,使用生成的数据集xy,学习率lr=0.01,训练轮数epochs=1000进行训练。

4. 可视化结果

python

y_pred = model.forward(x)
plt.scatter(x, y, label='Data points')
plt.plot(x, x, color='red', label='y = x')
plt.plot(x, y_pred, color='green', label='Predicted')
plt.legend()
plt.show()

  • model.forward(x):使用训练好的模型model对数据集x进行前向传播,得到预测值y_pred
  • plt.scatter(x, y, label='Data points'):绘制原始数据集的散点图,标签为Data points
  • plt.plot(x, x, color='red', label='y = x'):绘制真实的线性关系y = x的折线图,颜色为红色,标签为y = x
  • plt.plot(x, y_pred, color='green', label='Predicted'):绘制模型预测结果的折线图,颜色为绿色,标签为Predicted
  • plt.legend():显示图例,方便区分不同的图形。
  • plt.show():显示绘制好的图形。

四、注意事项

  1. 本代码实现的是一个简单的线性回归神经网络,实际应用中可能需要更复杂的模型结构和优化方法。
  2. 学习率lr和训练轮数epochs是超参数,可能需要根据具体数据和任务进行调整以获得更好的训练效果。
  3. 代码中使用的均方误差损失函数和梯度计算公式是针对线性回归问题的常见选择,但在其他问题中可能需要使用不同的损失函数和梯度计算方法。

完整代码

import numpy as np
import matplotlib.pyplot as plt# 1. 生成数据集
np.random.seed(42)
x = np.linspace(-10, 10, 100)
y = x + np.random.normal(0, 1, x.shape)  # 添加噪声# 2. 定义神经网络(线性回归)
class SimpleNN:def __init__(self):self.w = np.random.randn()  # 权重self.b = np.random.randn()  # 偏置def forward(self, x):return self.w * x + self.b  # 前向传播def loss(self, y_true, y_pred):return np.mean((y_true - y_pred) **2)  # 均方误差def gradient(self, x, y_true, y_pred):dw = -2 * np.mean(x * (y_true - y_pred))  # 权重的梯度db = -2 * np.mean(y_true - y_pred)       # 偏置的梯度return dw, dbdef train(self, x, y, lr=0.01, epochs=1000):for epoch in range(epochs):y_pred = self.forward(x)dw, db = self.gradient(x, y, y_pred)self.w -= lr * dw  # 更新权重self.b -= lr * db  # 更新偏置if (epoch + 1) % 100 == 0:print(f'Epoch [{epoch+1}/{epochs}], Loss: {self.loss(y, y_pred):.4f}')# 3. 训练模型
model = SimpleNN()
model.train(x, y, lr=0.01, epochs=1000)# 4. 可视化结果
y_pred = model.forward(x)
plt.scatter(x, y, label='Data points')
plt.plot(x, x, color='red', label='y = x')
plt.plot(x, y_pred, color='green', label='Predicted')
plt.legend()
plt.show()

http://www.dtcms.com/wzjs/516918.html

相关文章:

  • 网站项目书范文企业网络营销目标
  • 手机网站建设地址网店推广运营策略
  • 私服网站如何做seo西安市网站
  • 百度显示网站正在建设中中国去中心化搜索引擎
  • 快递物流网站建设开发具备哪些功能百度股市行情上证指数
  • 河间申梦网站建设制作刷关键词要刷大词吗
  • 网站视频怎么做的好处百度关键词搜索推广
  • 百度网站排名全掉谷歌seo
  • 智慧团建注册登录入口官网手机版seo排名优化的网站
  • 学校网站建设方案策划书百度搜索引擎广告投放
  • 深圳和海枫建设集团有限公司网站做好网络推广
  • 高端企业网站建设注意问题优化百度涨
  • logo在线制作免费网站东莞网站seo优化托管
  • 怎么做外国网站卖东西四川seo快速排名
  • 网站开发公司北京网络推广外包费用
  • 新网站怎么做seo百度一下 你就知道首页
  • 做一家开发网站的公司简介企业邮箱注册
  • 网站建设及维护合同没有限制的国外搜索引擎
  • 关于做网站的策划书鸿星尔克网络营销
  • 广州正佳广场官网东莞优化怎么做seo
  • 零售网站有哪些平台如何写好一篇软文
  • 怎么做wp网站最近发生的重大新闻
  • 德阳网站建设公司哪家好营销型网站开发公司
  • 网站建设视频图片网站的推广平台有哪些
  • wordpress 侧边栏浮动枫树seo
  • 苏州做网站费用明细南宁网站推广公司
  • web网站开发学院百度关键词分析工具
  • 市住房城乡建设部网站seo体系百科
  • 如何自己做时时彩网站网络营销公司如何建立
  • 可以做调查的网站品牌seo培训