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

防做网站佛山网站排名提升

防做网站,佛山网站排名提升,乌鲁木齐公司网站建设,广东平台网站建设平台一、概述 本代码实现了一个简单的神经网络进行线性回归任务。通过生成包含噪声的线性数据集,定义一个简单的神经网络类,使用梯度下降算法训练网络以拟合数据,并最终通过可视化展示原始数据、真实线性关系以及模型的预测结果。 二、依赖库 …

一、概述

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

二、依赖库

  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/431747.html

相关文章:

  • 怎么做淘宝客优惠劵网站百度人工服务热线电话
  • 建设网站需要多大域名空间如何让百度能查到自己
  • 网站建设服务58如何推广产品
  • uugaicomlogo免费设计网站许昌seo公司
  • 做网站横幅技巧google官网下载安装
  • 上海金融网站建设他达拉非片的作用及功效副作用
  • h5网站有哪些软文客
  • 做网站工作量怎么算自己怎么制作一个网站
  • 民宿网站开发数据流图广州seo托管
  • 东莞凤岗网站建设制作百度贴吧怎么发广告
  • 东华建设官方网站网络营销专家
  • 赣州瑞金网站建设网络市场的四大特点
  • 站群和独立站的区别市场营销策划公司
  • 做简单鬼畜视频的网站软件优化
  • 工程公司注册经营范围深圳做seo有哪些公司
  • 视频网站开发方法广告接单网站
  • 一台云服务器可以做多个网站怎么制作百度网页
  • 网站添加文章泉州百度广告
  • 网站的制作流程站长之家关键词挖掘
  • 昆明网站建设价格百中搜优化
  • wordpress留学主题seo优化方法
  • 义乌网站建设公司排名百度软件市场
  • 同德县公司网站建设seo研究中心怎么了
  • 网站建设和维护怎么学搜索引擎入口官网
  • 建立网站的方法seo查询友情链接
  • 企业网站制作步骤整站优化提升排名
  • 做网站可能遇到的问题seoul什么意思
  • 响应式网站建站系统上海百度推广公司排名
  • 如何制作企业网站西安危机公关公司
  • 广州网站排名优化价格点石关键词排名优化软件