当前位置: 首页 > 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/609195.html

相关文章:

  • 作品展示的网站做网站下载哪个软件
  • 微网站好制作吗北京公司地址推荐
  • 山东建设报网站中企动力邮箱登录网址
  • 手机 网站内 搜索网站建设哪个空间比较好
  • 商丘网站建设运营公司怎么区分用vs和dw做的网站
  • 做网站值钱吗网站安全监测预警平台建设成效
  • j2ee 建设简单网站域名访问wordpress
  • 图书馆网站设计方案抖音搜索关键词排名查询
  • 网站建设方案书doc模板网站文件上传wordpress修改
  • 网站建设管理的建议开发一个页面多少钱
  • 一起做的网站重庆顶呱呱网站建设
  • 嘉兴市南湖区建设街道网站建设网站需要了解些什么东西
  • 什么是网站实施太湖县城乡建设局网站
  • 做体育直播网站抓好门户网站 建设
  • 全国建设造价信息网站网站加ico
  • 景区网站建设要求企业网站建设 价格
  • wordpress网站二次开发学网络工程师
  • zencart 官方网站少儿编程加盟店8
  • 做自媒体可以搬运国外网站新闻吗一个公司的网址怎么弄
  • 网站 数据库+1html5网页设计教程
  • 西宁网站建设优化百度seo推广怎么做
  • 孟村住房建设局网站手机端网站欣赏
  • wordpress心理教育网站高校网站建设资料库
  • php网站模板 下载石河子做网站的公司
  • 大连网站建设连城传媒2018年临沂建设局网站
  • 张店区网站建设特点有哪些 谢谢莱芜区平台公司
  • 个人网站备案需要什么网站流量 seo
  • 漯河哪里做网站网站开发教学网站
  • 杭州网站建设V芯ee8888e深圳万户网络技术有限公司
  • 定制建站公司水果店推广营销方案