Kirino 的技术档案
文章简介分类 Light Dark
Entries tagged :: 深度学习
  • 2025-08-15

    Grain用于读取和处理用于训练和评估 JAX 模型的数据

    Grain介绍 Grain官方Docs https://google-grain.readthedocs.io/en/latest/index.html - 用户可以带来任意的 Python 转换。 - Grain 被设计为模块化。如果需要,用户可以使用自己的实现轻松覆盖 Grain 组件。 - 同一管道的多…
    Read more ⟶
  • 2025-08-15

    LeNet(Jax/Flax)实现

    LeNet LeNet,它是最早发布的卷积神经网络之一,因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的(并以其命名),目的是识别图像 LeCun et al., 1998 中的手写数字。 当时,Yann LeCun发表了第一篇通过…
    Read more ⟶
  • 2025-08-15

    LeNet(PyTorch)实现

    LeNet LeNet,它是最早发布的卷积神经网络之一,因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的(并以其命名),目的是识别图像 LeCun et al., 1998 中的手写数字。 当时,Yann LeCun发表了第一篇通过…
    Read more ⟶
  • 2023-01-29

    PyTorch常用代码块

    PyTorch最好的资料是官方文档。 <a name="L2Vea" </a 1. 基本配置 <a name="EoqEF" </a 需要导入的包 <a name="GmVCU" </a 检查PyTorch版本 <a name="V3YNz" </a 固定随机种子 在硬件设备(CPU、GPU)不同时,完全的可…
    Read more ⟶
  • 2022-08-30

    ResNeXt

    <a name="DvcNW" </a ResNext <a name="z9jM3" </a 改进点 改进了Block<br / <a name="AVIyb" </a 准确率的提高 <a name="QIaVv" </a 在计算量相同的情况下,错误率更低 <a name="fgp1L" </a 使用了分组…
    Read more ⟶
  • 2022-08-28

    ResNet

    <a name="M4FXV" </a ResNet详解 ResNet在2015年由微软实验室提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。<br / 模型中的亮点: - 超深的网络结构 - 提出Residual模块 - 使用Batch…
    Read more ⟶
  • 2022-08-13

    GoogLeNet

    <a name="wXrX4" </a GoogLeNet <a name="i6rYH" </a 简介 GoogLeNet在2014年由Google团队提出,斩获当年ImageNet竞<br / 赛中Classification Task 分类任务 第一名。 <a name="IRBdy" </a Goog…
    Read more ⟶
  • 2022-07-29

    VGGNet

    <a name="MWvnu" </a VGGNet简介 VGG在2014年由牛津大学著名研究组VGG Visual Geometry<br / Group 提出,斩获该年ImageNet竞赛中 Localization Task 定位<br / 任务 第一名 和 Classification Task 分类…
    Read more ⟶
  • 2022-07-19

    AlexNet网络

    <a name="ltqSD" </a AlexNet简介 AlexNet是2012年ISLVRC 2012(ImageNet Large Scale Visual Recognition<br / Challenge)竞赛的冠军网络,分类准确率由传统的 70%+提升到 80%+。<br / 它是由Hinto…
    Read more ⟶
  • 2022-05-18

    猫狗数据集分类VGG16(TensorFlow实现)

    TensorFlow版本:2.6.0 CUDA设备:/device:GPU:0 目录结构: 卷 新加卷 的文件夹 PATH 列表 卷序列号为 44A6-CC9A D:\DOCUMENTS\PYTORCH深度学习实战\PETIMAGES ├─Cat └─Dog There are 2 directories a…
    Read more ⟶
  • 2022-05-18

    猫狗数据集分类VGG16(PyTorch实现)

    数据集地址:https://www.kaggle.com/datasets/shaunthesheep/microsoft-catsvsdogs-dataset PyTorch版本:1.11.0 CUDA版本:11.3 CUDNN版本:8200 设备名称:NVIDIA GeForce RTX 3060 Lap…
    Read more ⟶
  • 2022-01-21

    生成式对抗网络(GAN)

    生成式对抗网络 Ian Goodfellow等人在2014年的论文中提出了生成式对抗网络,尽管这个想法立刻使研究人员们兴奋不已,但还是花了几年时间才克服了训练GAN的一些困难。就像许多伟大的想法一样,事后看起来似乎很简单:让神经网络竞争,希望这种竞争能够促使它们变得更好。GAN由两个神经网络组成 - 生成器…
    Read more ⟶
  • 2022-01-10

    变分自动编码器

    变分自动编码器 Diederik Kingma和Max Welling于2013年推出了自动编码器的另一个重要类别,并迅速成为最受欢迎的自动编码器类型之一:变分自动编码器 它们与目前为止的自动编码器有很大的不同,它们具有以下特殊的地方: - 它们是概率自动编码器,这意味着即使在训练后,它们的输出会部分由概率决…
    Read more ⟶
  • 2022-01-08

    稀疏自动编码器

    稀疏自动编码器 另一种会导致良好特征提取的约束是稀疏性:通过在成本函数中添加适当的函数项,强迫自动编码器减少编码层中活动神经元的数量。例如,可以强迫其在编码层中平均仅有5%的显著活动神经元。这迫使自动编码器将每个输入表示为少量活动神经元的组合。结果,编码层中的每个神经元最终会代表一个有用的特征 一种简单的方式…
    Read more ⟶
  • 2022-01-08

    去噪自动编码器

    去噪自动编码器 强制自动编码器学习有用特征的另一种方法是向其输入中添加噪声,训练它来恢复原始的无噪声输入。这个想法自1980年代开始就存在(在Yann LeCun 1987年的硕士论文中提到过)。在2008年的论文中,Pascal Vincent等人表明自动编码器也可以用于特征提取。在2010年的论文中,Vi…
    Read more ⟶
  • 2022-01-06

    循环自动编码器

    循环自动编码器 如果要为序列构建自动编码器,例如时间序列和文本(例如,用于无监督学习或降维),那么递归神经元可能比密集网络更合适。构建循环自动编码器非常简单直接:编码器通常是序列到向量的RNN,它将输入序列压缩为单个向量。解码器是向量到序列RNN,做相反的处理: Epoch 1/10 1719/1719 ==…
    Read more ⟶
  • 2022-01-06

    卷积自动编码器

    卷积自动编码器 如果要处理图像,目前为止的自动编码器都无法很好的工作(除非图像非常小),卷积神经网络比密集网络更适合处理图像。如果要为图像构建自动编码器(例如,用于无监督预训练或降维),则需要构建卷积自动编码器。编码器是由卷积层和池化层组成的常规CNN。它通常会减小输入的空间尺寸(即高度和宽度),同时会增加深…
    Read more ⟶
  • 2022-01-06

    堆叠式自动编码器

    堆叠式自动编码器 自动编码器可以具有多个隐藏层。在这种情况下,它们被称为堆叠式自动编码器(或深度自动编码器)。添加更多的层有助于自动编码器学习更多的复杂的编码。就是说,要注意不要使自动编码器过于强大。想象一个强大的编码器,它只是学会了把每个输入映射到单个任意数字(而解码器则学习反向映射)。显然这样的自动编码器…
    Read more ⟶
  • 2021-12-30

    使用不完整的线性自动编码器执行PCA

    使用不完整的线性自动编码器执行PCA 如果自动编码器仅使用线性激活,并且成本函数是均方误差MSE,则最后执行的是主成分分析(PCA) 以下代码构建了一个简单的线性自动编码器,来对3D数据集执行PCA,将其投影到2D: - 将自动编码器分为两个子主件:编码器和解码器。两者都具有单一Dense层的常规Sequen…
    Read more ⟶
  • 2021-12-13

    处理长序列

    处理长序列 在长序列上训练一个RNN,必须运行很多时间步长,从而展开的RNN成为一个非常深的网络。就像任何深度神经网络一样,它可能会遇到不稳定的梯度问题:它可能永远在训练,或者训练可能会不稳定。此外,当RNN处理一个长序列时,它会逐渐忘记序列中的第一个输入。 应对不稳定梯度问题 在深度网络中用于应对不稳定梯度…
    Read more ⟶
  • 2021-12-06

    循环神经网络和层

    循环神经元和层 到目前为止,我们只关注前馈神经网络,其中激活仅在一个方向上流动,从输入层流向输出层。循环神经网络看起来非常像前馈神经网络,除了它还具有指向反向的连接。最简单的RNN由一个神经元接收输入,产生输出并将该输出返送回自身组成。在每个时间步长$t$(也称为帧),该循环神经网络接收输入$x t $和前一…
    Read more ⟶
  • 2021-12-06

    使用RNN和CNN处理序列

    使用RNN和CNN处理序列 击球手将球击出。外野手立即开始奔跑,预测球的轨迹。他跟踪它,调整自己的运动,最后抓住球。不管你是在听完朋友的话还是在早餐时期待咖啡的味道,预测都是你一直在做的事情。循环神经网络(RNN),这是一类可以预测未来的网络(在一定程度上)。它们可以分析时间序列数据(例如股票价格),并告诉你…
    Read more ⟶
  • 2021-12-06

    语义分割

    语义分割 在语义分割中,每个像素根据其所属物体的类别(例如,道路、汽车、行人、建筑物等)进行分类。例如分割图像右侧的所有自行车都变成了一大块像素。此任务的主要困难在于,当图像通过常规CNN时,它们会逐渐失去其空间分辨率(由于步幅大于1的层),因此常规的CNN可能最终会知道在图像的左下角有一个人,但不会比这更精…
    Read more ⟶
  • 2021-12-06

    YOLO

    YOLO YOLO是Joseph Redmon等人在2015年的论文中提出的一种极其快速、准确的物体检测架构随后在2016年(YOLOv2)和2018(YOLOv3)中进行了改进。 YOLOv3的架构和全卷积网络的架构非常相似,但有一些重要的区别: - 它为每个网格单元输出5个边界框(而不是一个),并且每个边…
    Read more ⟶
  • 2021-11-27

    全卷积网络

    全卷积网络 FCN的概念由Jonathan Long等人在2015年发表的论文中首次提出,用于语义分割(根据图像所属物体的类别对图像中的每个像素点进行分类的任务)。作者指出,可以用卷积层代替CNN顶部的密集层。 假设一个具有200个神经元的密集层位于一个卷积层的顶部,该卷积层输出100个特征图,每个特征图的大…
    Read more ⟶
  • 2021-11-26

    物体检测

    物体检测 在图像中对多个物体进行分类和定位的任务称为物体检测。一种通用的方法是采用经过训练的CNN来对单个物体进行分类和定位,然后将其在图像上滑动。 这项技术非常简单直观,但是它将多次检测同一物体,但位置略有不同。然后需要进行一些后期处理,以消除所有不必要的边界框。一种常见的方法称为非极大抑制。以下是操作方式…
    Read more ⟶
  • 2021-11-26

    分类与定位

    分类与定位 定位图片中物体可以表示为回归任务:预测物体周围的边界框,一种常见的方法是预测物体中心的水平坐标和垂直坐标,还有其高度和宽度。这意味着有四个数字要预测。它不需要对模型进行太多修改,只需要添加四个具有单位的第二个密集输出层(通常在全局平均池化层之上),就可以使用MSE损失对其进行训练: 花朵数据集在花…
    Read more ⟶
  • 2021-11-26

    迁移学习的预训练模型

    迁移学习的预训练模型 如果想构建图像分类器但没有足够的训练数据,那么重用预训练模型的较低层通常是个好办法。例如,训练模型来对花的图片进行分类,并使用预先训练的Xception模型。首先,使用TensorFlow Datasets加载数据集: 可以通过设置with info=True获取有关数据集的信息。在这里…
    Read more ⟶
  • 2021-11-26

    使用Keras的预训练模型

    使用Keras的预训练模型 通常,无需手动实现像GoogLeNet或ResNet这样的标准模型,因为在keras.applications包中只需一行代码即可获得预训练的网络。 例如,使用以下代码加载在ImageNet上预训练的ResNet-50模型: 这会创建一个ResNet-50模型并下载在ImageNe…
    Read more ⟶
  • 2021-11-21

    CNN架构

    CNN架构 典型的CNN架构堆叠了一些卷积层(通常每个卷积层都跟随着一个ReLU层),然后是一个池化层,然后是另外几个卷积层(+ReLU),然后是另一个池化层,以此类推。随着卷积网络的不断发展,图像变得越来越小,但是由于卷积层的存在,图像通常也越来越深(即具有更多的特征图)。在堆栈的顶部添加了一个常规的前馈神…
    Read more ⟶
  • 2021-11-19

    池化层

    池化层 池化层的目标是对输入图像进行下采样(即缩小),以便减少计算量、内存使用量和参数数量(从而降低过拟合的风险) 池化层中的每个神经元都连接到位于一个小的矩形接受视野中的上一层中有限数量的神经元的输出。必须定义其大小、步幅和填充类型。但是,池化层没有权重。它所做的工作就是使用聚合函数(例如最大值或均值来聚合…
    Read more ⟶
  • 2021-11-15

    卷积层

    卷积层 CNN的最重要的构建层就是卷积层:第一卷积层的神经元不会连接到输入图像中的每个像素,而只于接受视野内的像素相连。反过来,第二卷积层的每个神经元仅连接到位于第一层中的一个小矩阵内的神经元。这种架构允许网络集中在第一个隐藏层的低阶特征中,然后在下一个隐藏层中将它们组装成比较高阶的特征。 之前的神经网络都具…
    Read more ⟶
  • 2021-11-14

    视觉皮层的架构

    视觉皮层的架构 卷积神经网络(CNN)起源于对大脑的视觉皮层的研究,从20世纪80年代起被用于图像识别。在过去几年中,由于计算机计算能力的提高、可训练数据数量的增加,以及用于深度学习网络训练技巧的增加,CNN已经在一些复杂的视觉任务中实现了超人性化,广泛用于图片搜索服务、自动驾驶汽车、自动视频分类系统等。此外…
    Read more ⟶
  • 2021-10-31

    TensorFlow数据集项目

    TensorFlow数据集(TFDS)项目使下载通用数据集变得非常容易,从小型数据集(如MNIST或Fashion MNIST)到大型数据集(如ImageNet)。该列表包括图像数据集、文本数据集(包括翻译数据集)以及音频和视频数据集。 TFDS没有和TensorFlow捆绑在一起,因此需要安装tensorf…
    Read more ⟶
  • 2021-10-27

    TFRecord格式

    TFRecord格式 TFRecord格式是TensorFlow首选的格式,用于储存大量数据并有效读取数据。这是一种非常简单的二进制格式,只包含大小不同的二进制记录序列(每个记录由一个长度、一个用于检查长度是否受损的CRC校验和、实际数据 以及最后一个CRC校验和组成)。可以使用tf.io.TFRecordW…
    Read more ⟶
  • 2021-10-25

    数据API

    数据API 整个数据API都围绕着数据集的概念。通常,使用的是逐步从磁盘中读取数据的数据集,但为了简单起见,使用 tf.data.Dataset.from tensor slices 在RAM中完全创建一个数据集合 <TensorSliceDataset shapes: , types: tf.int32 f…
    Read more ⟶
  • 2021-10-24

    TensorFlow函数和图

    8 <tf.Tensor: shape= , dtype=float32, numpy=8.0 现在用tf.function 函数将此Python函数转化为TensorFlow函数 <tensorflow.python.eager.def function.Function at 0x23900209dc0…
    Read more ⟶
  • 2021-10-16

    自定义模型和训练算法

    自定义损失函数 当训练回归模型时,训练集有噪声,均方误差MSE可能会对大误差惩罚太多而导致模型不精确。平均绝对误差MAE不会对异常值惩罚太多,但是训练可能要一段时间才能收敛,并且训练后的模型可能不太精确。这就是使用Huber损失而不是旧的MSE损失的好时机。 $$L \delta y,f x ==\left\…
    Read more ⟶
  • 2021-10-09

    像 NumPy 一样使用 TensorFlow

    张量和操作 可以使用tf.constant 创建张量 <tf.Tensor: shape= 2, 3 , dtype=float32, numpy= array 1., 2., 3. , 4., 5., 6. , dtype=float32 像 ndarray 一样,tf.Tensor 具有形状和数据类型(d…
    Read more ⟶
  • 2021-10-09

    TensorFlow快速浏览

    Tensorflow快速浏览 高级深度学习API tf.keras tf.estimator 底层深度学习API tf.nn tf.losses tf.metrics tf.optimizers tf.train tf.initializers 自动微分 tf.GradientTape tf.gradient…
    Read more ⟶
  • 2021-10-03

    通过正则化避免过拟合

    通过正则化避免过拟合。 深度神经网络通常拥有数万个参数,有时甚至有数百万个。这个深度神经网络带来了难以置信的自由度,意味着它们可以拟合各种各样的复杂数据集。 但是这种巨大的灵活性也使网络易于过拟合训练集。此时就需要正则化。 $\ell 1$和$\ell 2$正则化 可以使用$\ell 2$正则化来约束神经网络…
    Read more ⟶
  • 2021-09-30

    更快的优化器

    动量优化 想象一下,一个保龄球在光滑的表面上沿着平缓的坡度滚动:它开始速度很慢,在很快会获得动量,直到最终达到终极速度(如果有摩擦或空气阻力)。相比之下,常规的梯度下降法只是在斜坡上采取小的、常规的步骤,因此算法将花费更多时间到达底部 回想一下梯度下降通过直接减去权重的成本函数$J \theta $的梯度乘以…
    Read more ⟶
  • 2021-09-28

    重用预训练层

    用Keras进行迁移学习 假如Fashion MNIST数据集包含了8个类别,例如,除凉鞋和衬衫之外的所有类别。有人在该数据集上建立并训练的Keras模型,并获得了相当不错的性能(精度 90%)。将此模型称为模型A。现在要处理另一项任务:有凉鞋和衬衫的图像,想要训练一个二元分类器(正=衬衫,负=凉鞋)。数据集…
    Read more ⟶
  • 2021-09-26

    深度神经网络的训练-梯度消失和梯度爆炸问题

    梯度消失与梯度爆炸问题 反向传播算法的工作原理是从输出层到输入层次,并在此过程中传播误差梯度。一旦算法计算出损失函数相对于每个参数的梯度,可以使用这些梯度以梯度下降步骤来更新每个参数。 随着算法向下传播到较低层,梯度通常会越来越小。结果梯度下降更新使较低层的连接权重保持不变,训练不能收敛到一个良好的解。这就是…
    Read more ⟶
  • 2021-09-19

    构建MLP模型、数据可视化及神经网络超参数微调

    利用顺序API构建回归MLP 用回归神经网络解决加州的住房问题 用Sickit-Learn中的fetch california housing 函数加载数据 使用顺序API来构建、训练、评估和使用回归MLP进行预测与我们进行分类非常相似 主要区别在于输出层只有一个神经元,并且不使用激活函数,而损失函数是均方误…
    Read more ⟶
  • 2021-09-11

    残差神经网络(ResidualNet)

    残差神经网络(ResNet) 为什么神经网络的层数越来越深 由图可知随着神经网络层数的增加,神经网络的训练误差和测试误差相较于较低层数的神经网络都要更高。但是这个与越深的网络,训练误差和测试误差都要更小这个第一感觉相违背。 在相同的迭代次数下,更深的神经网络的误差更容易趋向于平稳。 神经网络随着层数增加误差率…
    Read more ⟶
  • 2021-09-09

    卷积神经网络(高级篇)

    构建高级卷积神经网络 以Google Net为例 GoogleNet的模型图为 可以看到其中有一个模块反复使用 Inception Module Inception Module 模型的具体结构图为 个人理解这个模块是将数据经过不同的卷积方式并保持图像大小不变得到不同的通来获得更多的信息,然后将最后的数据按通…
    Read more ⟶
  • 2021-09-08

    使用顺序API构建图像分类器

    使用Keras加载数据集 60000, 28, 28 dtype 'uint8' 将数据集划分为训练集,验证集和测试集 像素强度表示为整数0-255,由于我们要使用梯度下降神经网络,因此必须缩放输入特征。 因为将像素强度除以255.0将之转化为0-1之间的浮点数 对于MNIST当标签等于5时,说明图像代表手写…
    Read more ⟶
  • 2021-09-06

    PyTorch环境的配置

    PyTorch的配置 这里附上官网的链接 https://pytorch.org/get-started/locally/ https://pytorch.org/get-started/locally/ CPU版本 选择PyTorch版本 PyTorch Build ,Stable 稳定版 ,Nightly…
    Read more ⟶
  • 2021-09-06

    MNIST手写数字集的多分类问题(Convolution Neural Network)

    运行结果:
    Read more ⟶
  • 2021-09-06

    MNIST手写数字集的多分类问题(Linear Layer)

    运行结果:
    Read more ⟶