zoukankan      html  css  js  c++  java
  • 《python深度学习》笔记---2.1-2.3、神经网络的数学基础

    《python深度学习》笔记---2.1-2.3、神经网络的数学基础

    一、总结

    一句话总结:

    神经网络由张量表示:前面讲过,神经网络完全由一系列张量运算组成,而这些张量运算都只是输入数据的几何 变换。
    高维空间复杂变换:因此,你可以将神经网络解释为高维空间中非常复杂的几何变换,这种变换可以通过许 多简单的步骤来实现。

    1、神经网络的核心组件-层的直观理解?

    数据过滤器:神经网络的核心组件是层(layer),它是一种数据处理模块,你可以将它看成数据过滤器。
    数据蒸馏:大多数深度学习都是将简单的层链接起来,从而实现渐进式 的数据蒸馏(data distillation)

    2、keras的fit 方法?

    拟合(fit)模型:在Keras 中这一步是通过调用网络的 fit 方法来完成的—— 我们在训练数据上拟合(fit)模型。

    3、张量?

    多维Numpy 数组:前面例子(手写数字识别)使用的数据存储在多维Numpy 数组中,也叫张量(tensor)。
    张量对这个领域非常重要:重要到Google 的 TensorFlow 都以它来命名
    数字容器:张量这一概念的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它 是数字的容器。

    4、标量(0D 张量)?

    一个数字的张量:仅包含一个数字的张量叫作标量(scalar,也叫标量张量、零维张量、0D 张量)。在 Numpy 中,一个 float32 或 float64 的数字就是一个标量张量(或标量数组)

    5、向量(1D 张量)?

    一维数组:数字组成的数组叫作向量(vector)或一维张量(1D 张量)。一维张量只有一个轴。下面是 一个 Numpy 向量。

    6、5D 向量和5D 张量?

    5D 向量:5个元素:[1,2,3,4,5]:5D 向量只 有一个轴,沿着轴有5 个维度
    5D 张量:5维数组:[[[[[1]]]]]:5D 张量有5 个轴(沿着每个轴可能有任意个维度)

    7、沿轴切片?

    只指定一个轴:my_slice = train_images[10:100]
    所有轴都指定出来:my_slice = train_images[10:100, :, :]

    8、样本轴?

    张量的第一个轴(0轴):通常来说,深度学习中所有数据张量的第一个轴(0 轴,因为索引从0 开始)都是样本轴 (samples axis,有时也叫样本维度)。在 MNIST 的例子中,样本就是数字图像。

    9、现实世界中的数据张量?

    向量数据:2D 张量,形状为 (samples, features)。
    时间序列数据或序列数据:3D 张量,形状为 (samples, timesteps, features)。
    图像:4D 张量,形状为 (samples, height, width, channels) 或(samples, channels, height, width)。
    视频:5D 张量,形状为 (samples, frames, height, width, channels) 或(samples, frames, channels, height, width)。

    10、图像数据和视频数据的区别?

    视频数据多一个frames

    图像:4D 张量,形状为 (samples, height, width, channels) 或(samples, channels, height, width)。
    视频:5D 张量,形状为 (samples, frames, height, width, channels) 或(samples, frames, channels, height, width)。

    11、向量数据及例子?

    【第一个轴是样本轴,第二个轴是特征轴】:这是最常见的数据。对于这种数据集,每个数据点都被编码为一个向量,因此一个数据批 量就被编码为 2D 张量(即向量组成的数组),其中第一个轴是样本轴,第二个轴是特征轴。
    【第一个轴人数,第二个轴年龄、邮编和收入】:人口统计数据集,其中包括每个人的年龄、邮编和收入。每个人可以表示为包含 3 个值 的向量,而整个数据集包含100 000 个人,因此可以存储在形状为 (100000, 3) 的 2D 张量中。
    【第一个轴文本数,第二个轴单词频数】:文本文档数据集,我们将每个文档表示为每个单词在其中出现的次数(字典中包含 20 000 个常见单词)。每个文档可以被编码为包含20 000 个值的向量(每个值对应于 字典中每个单词的出现次数),整个数据集包含500 个文档,因此可以存储在形状为 (500, 20000) 的张量中。

    12、时间序列数据或序列数据 及例子?

    samples, timesteps, features:样本数、时间步长,特征数
    股票价格数据集:每一分钟,我们将股票的当前价格、前一分钟的最高价格和前一分钟 的最低价格保存下来。因此每分钟被编码为一个3D 向量,整个交易日被编码为一个形 状为 (390, 3) 的 2D 张量(一个交易日有 390 分钟),而 250 天的数据则可以保存在一 个形状为 (250, 390, 3) 的 3D 张量中。这里每个样本是一天的股票数据。
    推文数据集:我们将每条推文编码为280 个字符组成的序列,而每个字符又来自于128 个字符组成的字母表。在这种情况下,每个字符可以被编码为大小为 128 的二进制向量 (只有在该字符对应的索引位置取值为1,其他元素都为0)。那么每条推文可以被编码 为一个形状为 (280, 128) 的 2D 张量,而包含100 万条推文的数据集则可以存储在一 个形状为 (1000000, 280, 128) 的张量中。

    13、所有计算机程序的本质?

    简化为二进制运算:所有计算机程序最终都可以简化为二进制输入上的一些二进制运算(AND、OR、NOR 等)

    14、keras.layers.Dense(512, activation='relu') 的张量理解?

    输入是2D张量,输出也是:这个层可以理解为一个函数,输入一个2D 张量,返回另一个2D 张量,即输入张量的新 表示。

    15、我们将一个2D 张量与一个向量相加。如果将两个形状不同的张量相加,会发生 什么?

    小张量被广播:如果没有歧义的话,较小的张量会被广播(broadcast),以匹配较大张量的形状。
    广播步骤一:添加广播轴:向较小的张量添加轴(叫作广播轴),使其 ndim 与较大的张量相同。
    广播步骤二:沿新轴重复:将较小的张量沿着新轴重复,使其形状与较大的张量相同。

    16、广播步骤及实例(假设 X 的形状是 (32, 10),y 的形状是 (10,))?

    广播步骤一:添加广播轴:向较小的张量添加轴(叫作广播轴),使其 ndim 与较大的张量相同。
    广播步骤一:首先,我们给 y 添加空的第一个轴,这样 y 的形状变为 (1, 10)。
    广播步骤二:沿新轴重复:将较小的张量沿着新轴重复,使其形状与较大的张量相同。
    广播步骤二:然后,我们将 y 沿着新轴重复32 次,这样 得到的张量 Y 的形状为 (32, 10)

    17、张量点积 ?

    *实现逐元素乘积:在 Numpy、Keras、Theano 和 TensorFlow 中,都是用 * 实现逐元素乘积。
    dot运算符来实现点积:TensorFlow 中的 点积使用了不同的语法,但在 Numpy 和 Keras 中,都是用标准的 dot 运算符来实现点积。

    18、张量重要运算?

    广播
    张量点积
    张量变形

    19、张量变形常见操作?

    reshape:train_images = train_images.reshape((60000, 28 * 28))
    transpose:x = np.transpose(x)

    20、张量运算的几何解释?

    张量有几何含义:对于张量运算所操作的张量,其元素可以被解释为某种几何空间内点的坐标,因此所有的张量运算都有几何解释。
    张量相加可以表示为向量四边形那个
    常见几何操作可以表示为张量运算:通常来说,仿射变换、旋转、缩放等基本的几何操作都可以表示为张量运算。

    21、深度学习的几何解释(两张纸折叠实例)?

    两张纸揉成球:想象有两张彩纸:一张红色,一张蓝色。将其中一张纸放在另一张上。现在将两张纸一起揉成小球。这个皱巴巴的纸球就是你的输入数 据,每张纸对应于分类问题中的一个类别。
    神经网络就是使纸球分开:神经网络(或者任何机器学习模型)要做的就是找 到可以让纸球恢复平整的变换,从而能够再次让两个类别明确可分。
    一系列简单的变换:通过深度学习,这一过程 可以用三维空间中一系列简单的变换来实现,比如你用手指对纸球做的变换,每次做一个动作,

    22、让纸球恢复平整就是机器学习的内容:为复杂的、高度折叠的数据流形找到简洁的表示?

    为复杂的、高度折叠的数据流形找到简洁的表示。
    复杂的几何变换逐步分解:深度网络将复杂的几何变换逐步分解 为一长串基本的几何变换,这与人类展开纸球所采取的策略大致相同。
    每一层一点点变换:深度网络的每一层都通 过变换使数据解开一点点——许多层堆叠在一起,可以实现非常复杂的解开过程。

    23、深度学习的几何解释?

    神经网络由张量表示:前面讲过,神经网络完全由一系列张量运算组成,而这些张量运算都只是输入数据的几何 变换。
    高维空间复杂变换:因此,你可以将神经网络解释为高维空间中非常复杂的几何变换,这种变换可以通过许 多简单的步骤来实现。

    二、内容在总结中

    博客对应课程的视频位置:

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    【并行计算-CUDA开发】CUDA shared memory bank 冲突
    【并行计算-CUDA开发】CUDA shared memory bank 冲突
    【并行计算-CUDA开发】CUDA bank conflict in shared memory
    【并行计算-CUDA开发】CUDA bank conflict in shared memory
    【并行计算-CUDA开发】从熟悉到精通 英伟达显卡选购指南
    【并行计算-CUDA开发】从熟悉到精通 英伟达显卡选购指南
    【C/C++开发】【VS开发】win32位与x64位下各类型长度对比
    【C/C++开发】【VS开发】win32位与x64位下各类型长度对比
    【并行计算-CUDA开发】浅谈GPU并行计算新趋势
    【并行计算-CUDA开发】浅谈GPU并行计算新趋势
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13767967.html
Copyright © 2011-2022 走看看