神经网络以及简单的神经网络模型实现
神经网络基本概念:
-
神经元(Neuron):
神经网络的基本单元,接收输入,应用权重并通过激活函数生成输出。 -
层(Layer):
神经网络由多层神经元组成。常见的层包括输入层、隐藏层和输出层。 -
权重(Weights)和偏置(Biases):
权重用于调整输入的重要性,偏置用于调整模型的输出。 -
激活函数(Activation Function):
在神经元中引入非线性,如ReLU(Rectified Linear Unit)、Sigmoid、Tanh等。 -
损失函数(Loss Function):
用于衡量模型预测与实际结果之间的差异,如均方误差(MSE)、交叉熵损失等。 -
优化器(Optimizer):
用于调整模型权重以最小化损失函数,如随机梯度下降(SGD)、Adam等。
简单的神经网络示例:
下面是一个使用PyTorch构建简单线性回归的神经网络示例代码。这个示例展示了如何定义一个具有一个隐藏层的前馈神经网络,并训练它来逼近一些随机生成的数据点。
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt# 生成一些随机数据
np.random.seed(0)
X = np.linspace(0, 10, 100).reshape(-1, 1).astype(np.float32)
y = np.sin(X) + np.random.normal(0, 0.1, size=X.shape).astype(np.float32)# 转换为PyTorch的张量
X_tensor = torch.tensor(X)
y_tensor = torch.tensor(y)# 定义一个简单的神经网络模型
class NeuralNet(nn.Module):def __init__(self):super(NeuralNet, self).__init__()self.fc1 = nn.Linear(1, 10) # 输入层到隐藏层self.relu = nn.ReLU() # 激活函数self.fc2 = nn.Linear(10, 1) # 隐藏层到输出层def forward(self, x):x = self.fc1(x)x = self.relu(x)x = self.fc2(x)return x# 实例化模型、损失函数和优化器
model = NeuralNet()
criterion = nn.MSELoss() # 均方误差损失函数
optimizer = optim.Adam(model.parameters(), lr=0.01) # Adam优化器# 训练模型
epochs = 5000
losses = []
for epoch in range(epochs):optimizer.zero_grad()outputs = model(X_tensor)loss = criterion(outputs, y_tensor)loss.backward()optimizer.step()losses.append(loss.item())if (epoch+1) % 1000 == 0:print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.6f}')# 绘制损失函数变化图
plt.plot(losses, label='Training loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()# 测试模型
model.eval()
with torch.no_grad():test_x = torch.tensor([[5.0]]) # 测试输入predicted = model(test_x)print(f'预测值: {predicted.item()}')
运行结果展示:

代码理解:
下面便是详细分解这段代码进行理解:
-
生成数据:
- 使用
numpy生成一些随机的带有噪声的正弦函数数据。import numpy as np# 生成带有正态分布噪声的正弦函数数据 def generate_data(n_samples):np.random.seed(0) # 设置随机种子以确保结果可复现X = np.random.uniform(low=0, high=10, size=n_samples)y = np.sin(X) + np.random.normal(scale=0.3, size=n_samples)return X, y# 生成数据 X_train, y_train = generate_data(100)
- 使用
-
定义神经网络模型:
NeuralNet类继承自nn.Module,定义了一个具有一个隐藏层的前馈神经网络。使用ReLU作为隐藏层的激活函数。import torch import torch.nn as nn import torch.optim as optim# 定义神经网络模型 class NeuralNet(nn.Module):def __init__(self):super(NeuralNet, self).__init__()self.fc1 = nn.Linear(1, 10) # 输入大小为1(X),输出大小为10self.fc2 = nn.Linear(10, 1) # 输入大小为10,输出大小为1self.relu = nn.ReLU()def forward(self, x):x = self.relu(self.fc1(x))x = self.fc2(x)return x# 实例化模型 model = NeuralNet()# 打印模型结构 print(model)
-
实例化模型、损失函数和优化器:
model是我们定义的神经网络模型。criterion是损失函数,这里使用均方误差损失。optimizer是优化器,这里使用Adam优化器来更新模型参数。# 定义损失函数(均方误差损失) criterion = nn.MSELoss()# 定义优化器(Adam优化器) optimizer = optim.Adam(model.parameters(), lr=0.01)
-
训练模型:
- 使用
X_tensor和y_tensor进行训练,优化模型使其逼近y_tensor。# 将numpy数组转换为PyTorch张量 X_tensor = torch.tensor(X_train, dtype=torch.float32).view(-1, 1) y_tensor = torch.tensor(y_train, dtype=torch.float32).view(-1, 1)# 训练模型 def train_model(model, criterion, optimizer, X, y, epochs=1000):model.train()for epoch in range(epochs):optimizer.zero_grad()output = model(X)loss = criterion(output, y)loss.backward()optimizer.step()if (epoch+1) % 100 == 0:print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}')train_model(model, criterion, optimizer, X_tensor, y_tensor)
- 使用
-
测试模型:
- 使用
model.eval()将模型切换到评估模式,使用torch.no_grad()关闭梯度计算。 - 测试输入为
5.0,打印预测结果。# 测试模型 model.eval() with torch.no_grad():test_input = torch.tensor([[5.0]], dtype=torch.float32)predicted_output = model(test_input)print(f'预测输入为 5.0 时的输出: {predicted_output.item():.4f}')
- 使用
相关文章:
神经网络以及简单的神经网络模型实现
神经网络基本概念: 神经元(Neuron): 神经网络的基本单元,接收输入,应用权重并通过激活函数生成输出。 层(Layer): 神经网络由多层神经元组成。常见的层包括输入层、隐藏层…...
java中压缩文件的解析方式(解析文件)
背景了解:java中存在IO流的方式,支持我们对文件进行读取(Input,从磁盘到内存)或写入(output,从内存到磁盘),那么我们在面对 “zip”格式或者 “rar” 格式的压缩文件&…...
巧用 VScode 网页版 IDE 搭建个人笔记知识库!
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 巧用 VScode 网页版 IDE 搭建个人笔记知识库! 描述:最近自己在腾讯云轻量云服务器中部署了一个使用在线 VScode 搭建部署的个人Markdown在线笔记,考虑到在线 VScode 支持终…...
Jupyter Lab 使用
Jupyter Lab 使用详解 Jupyter Lab 是一个基于 Web 的交互式开发环境,提供了比 Jupyter Notebook 更加灵活和强大的用户界面和功能。以下是使用 Jupyter Lab 的详细指南,包括安装、基本使用、设置根目录和扩展功能等内容。 一、Jupyter Lab 安装与启动…...
MyBatis where标签内嵌foreach标签查询报错‘缺失右括号‘或‘命令未正确结束‘
MyBatis <where>标签内嵌<foreach>标签查询报错’缺失右括号’或’命令未正确结束’ <where>标签内嵌<foreach>标签 截取一段脱敏xml,写明大概意思 <select id"queryLogByIds" resultMap"BaseResultMap">SELE…...
重生奇迹MU 群战王牌
圣导师是重生奇迹MU游戏中八大职业之一,拥有风度翩翩、潇洒自如的形象和神一样的实力。无论是刷怪、PK、打boss还是混战,圣导师都表现出压制其他职业的强大气势。因此,这个职业在游戏中备受欢迎,人气非常高。 实力强大的二代隐藏…...
SpinalHDL之VHDL 和 Verilog 生成
本文作为SpinalHDL学习笔记第十六篇,记录使用SpinalHDL代码生成Verilog/VHDL代码的方法。 SpinalHDL学习笔记总纲链接如下: SpinalHDL 学习笔记_spinalhdl blackbox-CSDN博客 目录: 1.从 SpinalHDL 组件生成 VHDL 和 Verilog 2.生成的 VHD…...
c语言中的字符串函数
strstr函数 函数介绍 strstr 用于在一个字符串中查找另一个字符串的首次出现。 我们来看这个函数的参数名字:haysytack(干草堆)needle(针),这个其实就是外国的一句谚语:在干草堆中找一根针,就…...
[AI 大模型] 百度 文心一言
文章目录 [AI 大模型] 百度 文心一言简介模型架构发展新技术和优势API 代码示例 [AI 大模型] 百度 文心一言 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0DwAIh0T-1720667576892)(https://i-blog.csdnimg.cn/direct/283919e5d78b4951ba1ade5dcfc…...
机器学习开源分子生成系列(2)-基于三维形状和静电相似性的DeepFMPO v3D安装及使用
前言 本文是基于 3D 的分子生成方法DeepFMPO v3D的介绍及安装使用。 一、DeepFMPO v3D是什么? github代码介绍文章 在药物发现中,如何寻找具新颖性和结构多样性的候选分子是颇受药物设计科学家关注的问题。通过虚拟筛选的化学空间搜索往往会受限于筛选…...
机器学习-16-分布式梯度提升库XGBoost的应用
参考XGBoost库 1 XGBoost分布式梯度提升库 XGBoost,全称为eXtreme Gradient Boosting,是一个优化的分布式梯度提升库,旨在高效、灵活且便携。它在Gradient Boosting框架下实现了机器学习算法,并广泛用于分类、回归和排序任务。XGBoost之所以受到广泛欢迎,主要归功于它的…...
视觉/AIGC面经->多模态
1.ocr检测如何做?qwen的文本检测是否合理? paligemma: <loc0110><loc0124><loc0224><loc0389> plate ; <loc0244><loc0130><loc0281><loc0430> plate ; <loc0364><loc0820><loc0403><loc0951> pl…...
<数据集>钢板缺陷检测数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:1986张 标注数量(xml文件个数):1986 标注数量(txt文件个数):1986 标注类别数:7 标注类别名称:[crescent gap, silk spot, water spot, weld line, oil spot, punchin…...
EdgeOne安全能力开箱测评挑战赛
活动地址:EdgeOne安全能力开箱测评挑战赛-腾讯云开发者社区-腾讯云 随着网络攻击日益频繁,企业网站面临着数据泄露、DDoS攻击、CC攻击等多种安全威胁。如何有效保护企业网站安全,成为企业IT部门的重要任务。腾讯云EdgeOne作为一款集成了CDN和…...
神经网络识别数字图像案例
学习资料:从零设计并训练一个神经网络,你就能真正理解它了_哔哩哔哩_bilibili 这个视频讲得相当清楚。本文是学习笔记,不是原创,图都是从视频上截图的。 1. 神经网络 2. 案例说明 具体来说,设计一个三层的神经网络。…...
c++包管理器
conan conan search,查看网络库 conan profile detect,生成缓存信息conan new cmake_exe/cmake_lib,创建cmakelists.txtconan install .,执行Conanfile.txt中的配置,生成相关的bat文件 项目中配置Conanfile.txt(或者…...
监控易V7.6.6.15升级详解7,日志分析更高效
随着企业IT系统的日益复杂,日志管理成为了保障系统稳定运行、快速定位问题的重要工具。为了满足广大用户对日志管理功能的更高需求,监控易系统近日完成了重要版本升级,对日志管理功能进行了全面优化和新增。 一、Syslog日志与SnmpTrap日志统…...
HTML表格、表单标签
目录 一、表格 (1)关于表格中标签说明 (2)关于表格中属性说明 (3)简单操作演示 (4)表格小结 二、表单 (1)简单操作演示 (2)注…...
(Windows环境)FFMPEG编译,包含编译x264以及x265
本文使用 MSYS2 来编译 ffmpeg 一、安装MSYS2 MSYS2 是 Windows 下的一组编译套件,它可以在 Windows 系统中模拟 Linux 下的编译环境,如使用 shell 运行命令、使用 pacman 安装软件包、使用 gcc (MinGW) 编译代码等。 MSYS2 的安装也非常省心&#x…...
notepad++中文出现异体汉字,怎么改正
notepad显示异体字,如何恢复? 比如 “门” 和 “直接” 的"直"字,显示成了 方法 修改字体, 菜单栏选择 Settings(设置),Style Configurator…(语言格式设置…)…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
