
神经网络与深度学习笔记 Day1从深度学习基础到 PyTorch 张量实战ZZHow(ZZHow1024)参考课程【黑马程序员AI大模型《神经网络与深度学习》全套视频课程涵盖Pytorch深度学习框架、BP神经网络、CNN图像分类算法及RNN文本生成算法】[https://www.bilibili.com/video/BV1c5yrBcEEX]01 深度学习知识框架介绍机器学习在处理图像和文本数据方面能力较弱。CNN卷积神经网络 (Convolutional Neural Network)结构卷积层池化层全连接层案例图像分类CIFAR10 数据集进阶CV计算机视觉 (Computer Vision)RNN循环神经网络 (Recurrent NN)结构词嵌入层循环网络层全连接层案例歌词 AI 生成器进阶NLP自然语言处理 (Natural Language Processing)ANN人工神经网络 (Artificial neural network)结构输入层 → 1 层隐藏层 → N 层输出层 → 1 层标量向量矢量 → 张量Tensor工具PyTorch当前主流TensorFlow趋于过时02 深度学习简介图深度学习发展脉络机器学习是实现人工智能的一种途径。深度学习是机器学习的一个子集也就是说深度学习是实现机器学习的一种方法。深度学习是机器学习中一种基于对数据进行特征学习的算法。深度学习是基于人工神经网络深度是指网络中使用多层每层都通过非线性变换处理数据并逐渐提取出更复杂、更抽象的特征。图深度学习与机器学习对比传统机器学习算法依赖人工设计特征并进行特征提取而深度学习方法不需要人工而是依赖算法自动提取特征。深度学习通过模仿人脑的神经网络来处理和分析复杂的数据从大量数据中自动提取复杂特征。这也是深度学习被看做黑盒子可解释性差的原因。深度学习尤其擅长处理高维数据如图像、语音和文本。03 深度学习的特点多层非线性变换深度学习模型由多个层次组成每一层都应用非线性激活函数对输入数据进行变换。较低的层级通常捕捉到简单的特征如边缘、颜色等而更高的层级则可以识别更复杂的模式如物体或面部识别。自动特征提取与传统机器学习算法不同深度学习能够自动从原始数据中学习到有用的特征而不需要人工特征工程。这使得深度学习在许多领域中表现出色。大数据和计算能力深度学习模型通常需要大量的标注数据和强大的计算资源如 GPU来进行训练。大数据和高性能计算使得深度学习在图像识别、自然语言处理等领域取得了显著突破。可解释性差深度学习模型内部的运作机制相对不透明被称为“黑箱”这意味着理解模型为什么做出特定决策可能会比较困难。这对某些应用场景来说是一个挑战。04 深度学习常用模型介绍卷积神经网络 (Convolutional Neural Networks, CNN)结构输入层隐藏层卷积层池化层全连接层输出层应用图像 → CV主要用于图像处理任务如图像分类、目标检测、图像分割等。特点是使用卷积层来自动提取图像中的局部特征并通过池化层减少参数数量提高计算效率。循环神经网络 (Recurrent Neural Networks, RNN)应用文本 → NLP适用于处理序列数据例如自然语言处理 (NLP)、语音识别等。RNN 具有记忆功能可以处理输入数据的时间依赖性但标准 RNN 难以捕捉长期依赖关系。自编码器 (Autoencoders)结构由编码器 (Encoder) 和解码器 (Decoder) 两部分组成中间是一个低维的隐层表示瓶颈层。编码器把输入压缩成低维特征解码器再尝试从该特征还原原始输入训练目标是让输出尽可能接近输入。应用数据降维与特征压缩、图像去噪、异常检测、数据补全等。常见变体去噪自编码器 (Denoising AE)、变分自编码器 (VAE)后者可用于图像生成。生成对抗网络 (Generative Adversarial Networks, GAN)包含两个子网络生成器和判别器。生成器负责创建看起来真实的假样本而判别器则试图区分真假样本。GAN 广泛应用于图像生成、视频合成等领域。Transformer主要用于自然语言处理 (NLP) 任务尤其是机器翻译、文本生成等。Transformer 摒弃了传统的递归结构采用自注意机制 (self-attention)使得它能够并行处理整个句子的信息在机器翻译、文本摘要等任务中表现出色。深度强化学习 (Deep Reinforcement Learning, DRL)将深度神经网络与强化学习结合用神经网络拟合策略或价值函数适用于游戏博弈、机器人控制、自动驾驶决策等场景。图神经网络 (GNN, Graph Neural Network)面向图结构数据节点与边通过消息传递聚合邻居信息常用于社交网络分析、分子性质预测、知识图谱推理等。05 深度学习应用场景介绍计算机视觉 (Computer Vision)图像分类将图像分为不同的类别。常用于人脸识别、物体检测等。自动标注社交媒体照片、医疗影像中的病变检测。目标检测 (Object Detection) 在图像或视频中定位并分类多个对象。自动驾驶中的行人检测、监控视频中的入侵检测。面部识别通过分析面部特征进行身份验证或分类。手机解锁、安防监控系统。图像生成基于输入生成新的图像如风格转换、图像超分辨率等。艺术风格迁移、老旧照片修复。自然语言处理 (Natural Language Processing, NLP)机器翻译使用深度学习模型将一种语言的文本自动翻译成另一种语言。Google 翻译、实时语音翻译。情感分析分析文本中的情感倾向如正面、负面或中性。社交媒体监控、产品评论分析。文本生成生成符合语法和语义的自然语言文本。自动写作助手、新闻生成。语音识别将语音转化为文字。智能助手如 Siri、Alexa、自动字幕生成。聊天机器人Chatbot通过深度学习理解用户输入并生成合理的回应。客服机器人、虚拟助手如 GPT 类模型。推荐系统 (Recommendation Systems)电影、音乐推荐根据用户历史的评分和行为推荐相关的电影、音乐或电视剧。Netflix、 Spotify 的个性化推荐。电商推荐根据用户的购买历史和浏览习惯推荐商品。亚马逊、淘宝的商品推荐系统。社交媒体推荐分析用户的社交行为推荐相关内容或朋友。Facebook、 Instagram 的内容推荐。多模态大模型06 深度学习发展史介绍人工智能发展历史符号主义20 世纪 50-70专家系统占主导1950图灵设计国际象棋程序1962IBM Arthur Samuel 的跳棋程序战胜人类高手人工智能第一次浪潮统计主义20 世纪 80-2000主要用统计模型解决问题1993Vapnik 提出 SVM1997IBM 深蓝战胜卡斯帕罗夫人工智能第二次浪潮神经网络21 世纪初期神经网络、深度学习流派2012AlexNet 深度学习的开山之作2016Google AlphaGO 战胜李世石人工智能第三次浪潮大规模预训练模型2017-至今大规模预训练模型2017自然语言处理 NLP 的 Transformer 框架出现2018Bert 和 GPT 的出现2022ChatGPT 的出现进入到大模型 AIGC 发展的阶段深度学习发展历史早期探索1940s-1980s20 世纪 40 年代沃尔特•皮茨 (Walter Pitts) 和沃伦• 麦卡洛克 (Warren McCulloch) 等开始模仿生物神经系统来构建计算模型如 McCulloch-Pitts神经元。1957弗兰克•罗森布拉特 (Frank Rosenblatt) 提出感知器概念能够进行简单的二分类任务。1960 年代末出现了多层感知器 (MLP)但当时由于计算能力和数据量的限制这些模型的应用受到很大限制。挑战与瓶颈1980s-1990s1986David Rumelhart等人发表了关于反向传播 (Backpropagation, BP) 算法的研究成果使得多层神经网络能够通过梯度下降优化参数解决复杂的非线性问题。由于计算资源的限制以及对复杂数据 (如图像和语音) 的处理能力较弱深度学习未能广泛应用。复兴与突破2000s-2010s2006杰弗里•辛顿 (Geoffrey Hinton) 和其团队提出了深度置信网络 (DBN)标志着深度学习的复兴。2012亚历克斯•克里泽夫斯基 (Alex Krizhevsky) 等人设计的卷积神经网络 (CNN)AlexNet 在 ImageNet 图像识别挑战赛中取得巨大成功。爆发期2016-至今2016Google AlphaGO 战胜李世石人工智能第三次浪潮。2017自然语言处理 NLP 的 Transformer 框架出现。2018Bert 和 GPT 的出现。2022ChatGPT 的出现进入到大模型 AIGC 发展的阶段。07 PyTorch 框架简介PyTorch Foundation什么是 PyTorchPyTorch 一个基于 Python 语言的深度学习框架它将数据封装成张量 (Tensor) 来进行处理。PyTorch 提供了灵活且高效的工具用于构建、训练和部署机器学习和深度学习模型。PyTorch 广泛应用于学术研究和工业界特别是在计算机视觉、自然语言处理、强化学习等领域。PyTorch 的安装pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simplePyTorch 特点类似于 NumPy 的张量计算自动微分系统深度学习库动态计算图GPU 加速CUDA 支持支持多种应用场景跨平台支持PyTorch 发展历史2016 年 Facebook 正式发布了 PyTorch 的第一个版本。2018 年 PyTorch 发布了 1.0 版本标志着其正式进入生产级应用阶段。08 PyTorch 张量基本创建方式什么是张量PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。在 PyTorch 中张量以“类”的形式封装起来对张量的一些运算、处理的方法被封装在类中。PyTorch 张量与 NumPy 数组类似但 PyTorch 的张量具有 GPU 加速的能力通过 CUDA这使得深度学习模型能够高效地在 GPU 上运行。PyTorch 提供了对张量的强大支持可以进行高效的数值计算、矩阵操作、自动求导等。张量是 PyTorch 中的核心数据抽象PyTorch 支持各种张量子类型。通常地一维张量称为向量/矢量 (vector)二维张量称为矩阵 (matrix)。张量基本创建方式torch.tensor根据指定数据创建张量。torch.Tensor根据形状创建张量, 其也可用来创建指定数据的张量。torch.IntTensor、torch.FloatTensor、torch.DoubleTensor创建指定类型的张量。案例演示01_tensor_creation_basics.py张量的基本创建方式最小可运行示例importtorch# 根据数据创建张量atorch.tensor([[1,2],[3,4]])print(a)print(a.shape,a.dtype)# 根据形状创建张量未初始化btorch.Tensor(2,3)print(b.shape)# 指定类型创建ctorch.FloatTensor([[1,2],[3,4]])print(c.dtype)输出示例tensor([[1, 2], [3, 4]]) torch.Size([2, 2]) torch.int64 torch.Size([2, 3]) torch.float3209 PyTorch 创建线性和随机张量创建线性和随机张量torch.arange()和torch.linspace()创建线性张量。torch.random.initial_seed()和torch.random.manual_seed()随机种子设置。torch.rand/randn()创建随机浮点类型张量。torch.randint(low, high, size())创建随机整数类型张量。案例演示02_linear_random_tensors.py创建线性和随机张量最小可运行示例importtorch# 线性张量print(torch.arange(0,10,2))print(torch.linspace(0,10,5))# 随机种子固定保证结果可复现torch.manual_seed(42)print(torch.rand(2,3))print(torch.randn(2,3))print(torch.randint(0,10,(2,3)))输出示例tensor([0, 2, 4, 6, 8]) tensor([ 0.0000, 2.5000, 5.0000, 7.5000, 10.0000]) tensor([[0.8823, 0.9150, 0.3829], [0.9593, 0.3904, 0.6009]]) tensor([[ 0.3367, 0.1288, 0.2345], [ 0.2303, -1.1229, -0.1863]]) tensor([[2, 7, 6], [4, 3, 7]])10 PyTorch 创建全 0、1、指定值张量创建 0、1、指定值张量torch.ones和torch.ones_like创建全 1 张量torch.zeros和torch.zeros_like创建全 0 张量torch.full和torch.full_like创建全为指定值张量最小可运行示例importtorchprint(torch.ones(2,3))print(torch.zeros(2,3))print(torch.full((2,3),7))xtorch.tensor([[1,2],[3,4]])print(torch.ones_like(x))print(torch.zeros_like(x))print(torch.full_like(x,9))输出示例tensor([[1., 1., 1.], [1., 1., 1.]]) tensor([[0., 0., 0.], [0., 0., 0.]]) tensor([[7, 7, 7], [7, 7, 7]]) tensor([[1, 1], [1, 1]]) tensor([[0, 0], [0, 0]]) tensor([[9, 9], [9, 9]])11 PyTorch 元素类型转换张量元素类型转换data.type(torch.DoubleTensor)data.half / double / float / short / int / long()案例演示04_tensor_type_conversion.py张量类型转换最小可运行示例importtorch datatorch.tensor([1,2,3,4])print(data.dtype)# 使用 type() 转换print(data.type(torch.DoubleTensor).dtype)# 使用快捷方法转换print(data.float().dtype)print(data.double().dtype)print(data.half().dtype)print(data.short().dtype)print(data.int().dtype)print(data.long().dtype)输出示例torch.int64 torch.float64 torch.float32 torch.float64 torch.float16 torch.int16 torch.int32 torch.int6412 小结深度学习是机器学习的一个子集核心是基于人工神经网络、通过多层非线性变换自动提取特征尤其擅长处理图像、语音、文本等高维数据。常见模型各有分工CNN 处理图像、RNN 处理序列、Transformer 主导 NLP、GAN 与 VAE 负责生成、GNN 面向图结构数据。PyTorch 以张量 (Tensor) 为核心数据抽象兼具 NumPy 式的张量计算、自动微分、动态计算图与 GPU 加速能力是当前主流的深度学习框架。张量的创建方式可归纳为四类按数据创建torch.tensor、按形状创建torch.Tensor、按常量创建ones/zeros/full及其_like版本、按类型创建与转换FloatTensor、type()、float()等。固定随机种子torch.manual_seed是保证实验结果可复现的基本习惯。13 下一步学习计划张量运算与形状变换掌握reshape/view/squeeze/unsqueeze/transpose理解广播机制。张量与 NumPy 互操作熟悉numpy()与from_numpy()注意二者共享内存的细节。自动微分学习requires_grad、backward()与计算图为后续训练打基础。GPU 加速了解device与.to(device)把张量搬到 CUDA 上运行。动手实践用 PyTorch 实现线性回归与手写数字识别 (MNIST)完整走一遍「数据加载 → 模型定义 → 训练 → 评估」流程。