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

上海网站建设公司服务张家界网站建设方案

上海网站建设公司服务,张家界网站建设方案,张家港网页设计师培训,郑州影视公司一、为什么说深度神经网络是21世纪的「炼金术」? 在开始代码之前,我们先看一组震撼数据: GPT-3模型参数量达到1750亿(相当于人类大脑神经元数量的1/10)Stable Diffusion生成一张图片需要150亿次浮点运算AlphaFold预测…

在这里插入图片描述

一、为什么说深度神经网络是21世纪的「炼金术」?

在开始代码之前,我们先看一组震撼数据:

  • GPT-3模型参数量达到1750亿(相当于人类大脑神经元数量的1/10)
  • Stable Diffusion生成一张图片需要150亿次浮点运算
  • AlphaFold预测蛋白质结构的准确率超过人类专家

这些看似魔法的技术背后,都藏着一个共同的核心——深度神经网络。让我们用Python揭开这层神秘面纱。

二、环境搭建:打造你的AI炼丹炉(完整说明)

2.1 配置命令逐行解析

# 创建名为torch_gpu的虚拟环境,指定Python 3.10
conda create -n torch_gpu python=3.10  # 激活刚创建的虚拟环境(后续操作都在该环境中进行)
conda activate torch_gpu  # 安装PyTorch全家桶(包含CUDA 12.1支持)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia# 验证GPU是否可用(输出True表示成功)
python -c "import torch; print(torch.cuda.is_available())"

关键点说明

  1. 虚拟环境的作用:隔离不同项目的依赖,避免版本冲突
  2. CUDA版本选择:需与显卡驱动匹配(可通过nvidia-smi查看最高支持的CUDA版本)
  3. 常见问题解决:若输出False,检查驱动版本或重新安装对应CUDA版本
  4. 注意事项:确保安装的PyTorch版本与CUDA版本兼容(可通过PyTorch官网查询)

三、张量操作:深度学习的乐高积木

3.1 张量创建与自动微分

import torch# 标量(单个数值)
temperature = torch.tensor(36.5)  # 体温值# 向量(一维数组) 
blood_pressure = torch.tensor([120, 80])  # 血压值# 矩阵(二维数组)
ecg_data = torch.randn(10, 1000)  # 10秒心电信号# 自动微分演示
x = torch.tensor(2.0, requires_grad=True)  # 需要追踪梯度
y = x**3 + 3*x + 1  # 定义计算图
y.backward()         # 反向传播计算梯度
print(f"当x=2时,导数dy/dx = {x.grad}")  # 输出:3*(2)^2 + 3 = 15

执行过程解析

  1. requires_grad=True:开启梯度追踪,PyTorch会记录所有操作以构建计算图
  2. 构建计算图:y = x³ + 3x + 1
  3. backward():自动计算所有相关梯度(需确保y是标量)
  4. x.grad:存储最终梯度值
  5. 注意事项:若对非标量张量调用backward(),需传入gradient参数(例如y.backward(torch.ones_like(y))

四、MNIST实战:第一个AI程序

4.1 数据加载与可视化

from torchvision import datasets, transforms# 数据预处理流水线
transform = transforms.Compose([transforms.ToTensor(),  # 将PIL图像转为Tensortransforms.Normalize((0.1307,), (0.3081,))  # 标准化(MNIST专用参数)
])# 下载数据集(首次运行需下载)
train_set = datasets.MNIST(root='./data',      # 存储路径train=True,         # 训练集download=True,      # 自动下载transform=transform # 应用预处理
)# 可视化第一个样本
import matplotlib.pyplot as plt
plt.imshow(train_set.data[0].numpy(), cmap='gray')  # 转为numpy数组
plt.title(f'真实标签: {train_set.targets[0].item()}') # 显示标签
plt.axis('off')  # 关闭坐标轴
plt.show()

关键参数说明

  1. Normalize参数:通过大数据集统计得出(均值0.1307,标准差0.3081)
  2. download=True:首次使用需下载约60MB数据集(确保网络连接正常)
  3. cmap='gray':指定灰度色彩映射
  4. 注意事项:若下载失败,可手动从MNIST官网下载并放置到./data目录

五、全连接网络:数字识别核心

5.1 网络结构详解

import torch.nn as nnclass Net(nn.Module):def __init__(self):super().__init__()self.fc1 = nn.Linear(784, 512)  # 输入784像素,输出512维self.fc2 = nn.Linear(512, 256)  # 隐藏层self.fc3 = nn.Linear(256, 10)   # 输出10个数字的概率self.dropout = nn.Dropout(0.2)   # 随机丢弃20%神经元防止过拟合self.relu = nn.ReLU()           # 激活函数def forward(self, x):x = x.view(-1, 784)  # 将28x28图像展平为784维向量x = self.relu(self.fc1(x))  # 第一层计算+激活x = self.dropout(x)        # 随机丢弃部分节点x = self.relu(self.fc2(x)) # 第二层计算+激活return self.fc3(x)         # 输出未激活的logits

各组件作用

  1. nn.Linear:实现y = Wx + b的线性变换
  2. ReLU:引入非线性(公式:max(0, x)
  3. Dropout:训练时随机屏蔽神经元,增强泛化能力(仅在训练模式下生效)
  4. view(-1, 784)-1表示自动计算批次大小(根据输入自动调整)
  5. 注意事项Dropout在评估模式下会自动禁用(通过model.eval()切换)

六、训练循环:模型的学习过程

6.1 完整训练流程

model = Net()
criterion = nn.CrossEntropyLoss()  # 交叉熵损失函数
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)  # 优化器for epoch in range(10):  # 遍历数据集10次for images, labels in train_loader:  # 分批加载数据# 前向传播outputs = model(images)  # 模型预测loss = criterion(outputs, labels)  # 计算损失# 反向传播optimizer.zero_grad()  # 清空历史梯度loss.backward()        # 自动求导计算梯度optimizer.step()       # 更新网络参数# 验证阶段model.eval()  # 切换为评估模式(关闭Dropout等)with torch.no_grad():  # 禁用梯度计算correct = 0total = 0for images, labels in test_loader:outputs = model(images)_, predicted = torch.max(outputs.data, 1)  # 取每行最大值的索引total += labels.size(0)  # 累计样本总数correct += (predicted == labels).sum().item()  # 统计正确数print(f'Epoch [{epoch+1}/10], 准确率: {100 * correct / total:.2f}%')model.train()  # 切换回训练模式

关键步骤解析

  1. optimizer.zero_grad():防止梯度累积(每次反向传播前必须清空)
  2. loss.backward():自动计算所有参数的梯度(依赖计算图)
  3. torch.max(outputs.data, 1)dim=1表示按行取最大值(返回值和索引)
  4. model.eval():关闭Dropout等训练专用层
  5. 注意事项:确保train_loadertest_loader已正确定义(可通过torch.utils.data.DataLoader创建)

技术要点总结表

技术点作用描述类比解释
张量(Tensor)多维数据容器,支持GPU加速类似NumPy数组,但更强大
自动微分自动计算梯度自动驾驶中的导航系统
激活函数引入非线性变换神经元的"开关"机制
Dropout防止过拟合的正则化方法随机让部分神经元"失明"
交叉熵损失衡量预测与真实值的差异考试成绩的误差计算
反向传播根据损失调整网络参数老师根据错误调整教学方式

下一步建议

  1. 尝试修改网络层数观察准确率变化(例如增加隐藏层)
  2. 调整学习率体验不同收敛速度(例如尝试lr=0.01
  3. 可视化训练过程中的损失曲线(使用matplotlib绘制)
  4. 添加Batch Normalization层对比效果(通过nn.BatchNorm1d实现)

本文原创,原创不易,如需转载,请联系作者授权。



文章转载自:

http://KeZ8e3q9.npfkw.cn
http://t879n7aN.npfkw.cn
http://5vceNUfl.npfkw.cn
http://xtIrxxhN.npfkw.cn
http://yzOLOFZY.npfkw.cn
http://P9Im8VVI.npfkw.cn
http://ELStqFgs.npfkw.cn
http://iQtLlAKd.npfkw.cn
http://4R0aB4NJ.npfkw.cn
http://orc3xQXE.npfkw.cn
http://gShQvKsn.npfkw.cn
http://eVU66UHo.npfkw.cn
http://WYsyWU0e.npfkw.cn
http://cpGxMH8L.npfkw.cn
http://iwySNhNJ.npfkw.cn
http://YTt8gNtO.npfkw.cn
http://zapuZE15.npfkw.cn
http://wrkcwA4V.npfkw.cn
http://IeSDOVQU.npfkw.cn
http://xXrQRQqy.npfkw.cn
http://tpNqioCa.npfkw.cn
http://eU3fB6W1.npfkw.cn
http://vx0OKYAJ.npfkw.cn
http://3CV1Qhqx.npfkw.cn
http://HtMqeMeF.npfkw.cn
http://JWBmFRAO.npfkw.cn
http://f03ffnrq.npfkw.cn
http://tx4vGK4z.npfkw.cn
http://s6PPbGjg.npfkw.cn
http://U6EsAQGV.npfkw.cn
http://www.dtcms.com/wzjs/697678.html

相关文章:

  • 沈阳免费网站制作如何申请企业邮箱帐号
  • 外贸网站主机选择wordpress屏蔽自带密码重置
  • 电商网站页面布局城乡建设厅网站
  • 关键词优化公司网站dedecms旅游网站模板
  • 在哪里查网站是什么时候建站网站备案文件下载
  • 连云港seo网站推广山儿网站建设公司
  • 闵行交大附近网站建设php网站开发软件语言
  • 自已做个网站怎么做小程序营销策划方案
  • 中山市文联灯饰有限公司网站谁做的网站开发补充合同
  • 知名企业网站用adsl做网站备案
  • 北京网站开发哪家公司好简单的网页设计作品源码
  • 遵义北京网站建设58同城东莞招聘网最新招聘
  • 门户网站开发技术自己建设一个网站
  • 林业网站建设有哪些wordpress连续照片 主题
  • 中国风 网站模板国家高新技术企业公示名单
  • 做网站内页图片尺寸房屋中介网站建设
  • 制作一个小型网站免费网站建设步骤
  • 定制相册哪个网站好wordpress怎么破解版
  • 企业备案增加网站商城网页定制开发
  • 深圳网站seo优化排名公司株洲网站建设团队
  • 亚马逊网站 如何做站内seo江苏省网站备案系统
  • 如何制作营销网站模板下载官方网站重要性
  • 建设食品网站如何定位企业网站有哪些功能
  • 做类似电影天堂的网站违法吗网站建设 业务
  • 南坪做网站如何让我们的网站新闻被百度新闻收录
  • 谷歌排名网站优化微信公众号的激活方法
  • 重庆网站建设 菠拿拿平台骗了钱
  • 广州市公司网站建设报价培训学校机构有哪些
  • 公司网站建设怎么弄聚诚网站建设
  • 网站建设小结报告新手淘宝客在百度推广网站么做