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

做网站一般长宽多少钱网站开发进度控制计划表

做网站一般长宽多少钱,网站开发进度控制计划表,ui设计主要是做什么的,网站首页 栏目页 内容页总结 19-卷积层 【补充】看评论区建议的卷积动画视频 数学中的卷积 【链接】https://www.bilibili.com/video/BV1VV411478E/?fromsearchseid1725700777641154181vd_sourcee81e116c4ffe5e79d4bc44738263eda4 【可判断是否为卷积的典型标志】两个函数中自变量相加…总结 19-卷积层 【补充】看评论区建议的卷积动画视频 数学中的卷积 【链接】https://www.bilibili.com/video/BV1VV411478E/?fromsearchseid1725700777641154181vd_sourcee81e116c4ffe5e79d4bc44738263eda4 【可判断是否为卷积的典型标志】两个函数中自变量相加是否可以消掉如 下面的τ x-τ x 问在某一时刻 这个人的肚子中还有多少食物没消化 f(t)进食的时间与进食的多少 g(t)某个吃进去的食物 剩余的比例 当不考虑用户消化食物时下午两点时用户所剩食物就是f(t)的积分 推广到一般情况 f(t)和g(t)中点的对应关系 为什么叫卷积 g函数被翻转了一下 翻转后 卷积神经网络 【举例】卷积处理图片后的效果 【卷积共有三层含义】 卷积核过滤器选择不同的卷积核可以提到不同的局部特征 【卷积核参数设置】 不想考虑某个位置时卷积核某位置设为0想重点考虑某位置时将卷积核某位置数值设置比较高 1.求均值的卷积核 【符号】 *即卷积 Σ连加因为 考虑的是像素点是离散的因此不用积分用 Σ累加 g函数相当于规定了 周围像素点如何对当前像素点产生的影响 下图看到对应关系还是有点拧着的 g函数旋转180°后才是卷积核 卷积核可以扣在图像上进行对应相乘并最后相加其实省略了旋转这个步骤但本质上仍然是卷积运算 【局部性】看全局时两个图片像素点不同但是分别看局部特征是一样的 当只看局部时 【不同的卷积核提取后的效果】 卷积操作子从全连接到卷积 下图说明了 为什么卷积层是特殊的全连接层 首先将原全连接层的权重w改写为 四维的即含二维输入和二维输出i、j、a、b 1.【平移不变性】然后对v进行一下重新索引为保证其平移不变性 丢掉i、j维度 即在其他不关注的维度都是一样的东西后 为va,b 2.【局部性】然后 限制a、b在 负derta~derta的范围内即只关注 某个位置i、j像素点 附近的东西 【引言】MLP处理图片分类任务存在的问题 如一个12M即1200万的彩色图片 有RGB三通道则共 36M像素每个像素点有一个值用单隐藏层训练在模型共有36亿个元素远远多余所有的猫狗的数量这样还不如直接记住所有种类 在图片中找物体的两个原则 【两个原则】 1.平移不变性图片识别分类器在识别物体时不会因为该物体像素在图片中出现位置的不同 而改变识别结果待识别物体出现在图片中任何位置时应该都能准确识别才行 2.局部性只需要看局部信息即可不需要看全部信息 这两个原则也启发了后续的设计 下面从全连接层出发应用卷积即特殊的全连接层 重新考察全连接层 【此处用矩阵的原因】之前用全连接层时就将二维矩阵转换成了一维向量但此时要考察一些空间信息因此需要用矩阵来计算。 【为何reshape为4D tensor】输入和输出都变成了二维的权重表示使用下标要显示输入输出的高宽所以权重就是四维的 参数解释搜一下卷积的动图原来全连接层是一个权重现在是一个矩阵的权重 hi,j输出之前学习的全连接层时 是 hi wi,j,k,l权重之前是二维现在是四维之前得输入层和隐藏层是向量所以w下标为两个。现在输入层和隐藏层变成矩阵所以w下标是四个。 xk,l输入之前学习的全连接层时是 xi 弹幕Wijkl里面的kl是对应X的kl也就是输入的矩阵的元素ij代表卷积核里面和kl相乘的那个值因为卷积核的值不会变但是会滑动所以sigma下标是kl实际就是滑动卷积的意思 【w下标的变换得到v】然后对w进行重新索引即 重新排列得到v 因此 也会使得x的下标有点变化 平移不变性 【从图像卷积角度理解 用卷积核去扫input图像时卷积核的内容是不变的】 【i、j是位置ia、jb是 以ij位置为参照点进行平移后得到的位置】 至此存在的问题输入x的平移会导致v的平移如 x 的i、j分别平移为ia、jb则 识别图像的权重 v也会随之变化但我们的目标是 x的变化不应该引起v的变化 【权重就是特征提取器不应该随位置而发生变化】i、j应该是 图片中不同的位置索引将v改为va,b后即丢掉v的i、j两个维度就不依赖于 输入x的位置i、j了 虽然下图红框是二维卷积但是严格在数学上来说是 二维交叉相关 局部性 【从图像卷积角度理解 用卷积核去扫input图像时每次只关注input图像中 卷积核扫描的那一部分而不是每次关注全部input图像】 理论上以i、j为中心可以平移到任意位置但实际上 我们不应该看离i、j太远的位置即令太远的va,b0即不关注了应该只看其附近的点 即关注的位置 即 i、j变化的位置ia、jb 只关注 a和b在 [-dertaderta]的范围内即下图橙框 【局部性-补充】评论区推荐视频的通俗理解 看全局时两个图片像素点不同但是分别看局部特征是一样的 当只看局部时 卷积层 核矩阵即卷积核W和偏移b都是可以学习的参数 核矩阵卷积核的大小是超参数其控制局部性 概述 二维卷积 全程中 核是不变的即平移不变形 【二维卷积层】 用卷积核去扫描时丢掉的内容就是 (kh - 1) x kw - 1 下图中 五角星 即为 上节定义的二维交叉相关操作子 W和b都是可以学习的参数 【举例】 弹幕说卷积核肯定是自己学因为卷积核中每个元素都代表一个weight 交叉相关 交叉相关和卷积没有太多区别唯一的区别是w角标中的a、b和-a、-b 弹幕说是不是说卷积时他的核需要逆时针旋转180°相关不需要。 实际运算时反正参数推出来了效果也达到了所以我们就不去深究里面翻转前后代表的意义了 实际应用中虽然说 使用的是卷积操作但是实际上用的是交叉相关因为 严格来说卷积 要按照下图中这么写即 w角标为-a、-b但 我们 从使用者的角度 并不严格 一维和三维交叉相关 主要关注的还是二维图像 代码 互相关运算 # 互相关运算 import torch from torch import nn from d2l import torch as d2ldef corr2d(X, K): # X 为输入K为核矩阵计算二维互相关信息h, w K.shape # 核矩阵的行数和列数Y torch.zeros((X.shape[0] - h 1, X.shape[1] - w 1)) # 初始化输出Y的形状。X.shape[0]为输入高 for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i, j] (X[i:i h, j:j w] * K).sum() # 图片的小方块区域与卷积核做点积return Y# 验证上述二维互相关运算的输出 X torch.tensor([[0.0,1.0,2.0],[3.0,4.0,5.0],[6.0,7.0,8.0]]) K torch.tensor([[0.0,1.0],[2.0,3.0]]) corr2d(X,K)二维卷积层 互相关运算就是类似于点积对应位置卷积核覆盖的区域元素相乘再相加 【应用】检测图像颜色边缘 对于某一个图像如果 某个像素与其相邻像素相同则 与 [1,-1]核运算后 为0则不是边缘 如果某处是边缘即 由0变为1或1变为0则 与[1,-1]核运算后 不为0要么是1要么是-1 # 实现二维卷积层 class Conv2D(nn.Module):def __init__(self, kernel_size):self.weight nn.Parameter(torch.rand(kernel_size)) # 开始时随机初始化权重self.bias nn.Parameter(torch.zeros(1))def forward(Self, x):return corr2d(x, self.weight) self.bias# 卷积层的一个简单应用检测图片中不同颜色的边缘 X torch.ones((6,8)) X[:,2:6] 0 # 把中间四列设置为0 print(X) # 0 与 1 之间进行过渡表示边缘K torch.tensor([[1.0,-1.0]]) # 如果左右原值相等那么这两原值乘1和-1相加为0则不是边缘 Y corr2d(X, K) print(Y) print(corr2d(X.t(), K)) # X.t() 为X的转置而K卷积核只能检测垂直边缘给定输入X和输出Y学习得到卷积核K # 学习由X生成Y的卷积核此处以检测垂直边缘为例最简单的简化版 # 第一个参数1输入通道为1,第二个参数1输出通道为1要学习的核是 1x2的 # 单个矩阵输入通道为1黑白图片通道为1彩色图片通道为3。这里输入通道为1输出通道为1. conv2d nn.Conv2d(1, 1, kernel_size(1,2), biasFalse) # 11,6,8batch_size、channel、height、width X X.reshape((1,1,6,8)) # 通道维通道数channelRGB图3通道灰度图1通道。批量维就是样本维就是样本数batch_size Y Y.reshape((1,1,6,7)) # 输出的shape因为 核是1x2的所以最后会少一列即 6x8变成了6x7 for i in range(10):Y_hat conv2d(X)l (Y_hat - Y) ** 2conv2d.zero_grad()l.sum().backward()conv2d.weight.data[:] - 3e-2 * conv2d.weight.grad # 3e-2是学习率。沐神裸写的梯度下降if(i1) % 2 0:print(fbatch {i1},loss {l.sum():.3f})# 所学的卷积核的权重张量 print(conv2d.weight.data.reshape((1,2)))QA 17.没区别。 100个神经元的单隐藏层MLP 即有 一个输出维度为100的全连接层 只是为了说明 为什么卷积是特殊的全连接层 19.图片输入时就是一个二维的就是个矩阵 之前使用softmax回归时把图片reshape成了一个一维向量 20.没听过 21.感受野即kernel的大小 这个问题类似于之前全连接层提到过的 一个很浅的很宽的全连接层的效果没有 一个 深一点且窄一点的全连接层效果好 同理对于卷积层使用层数少且每层核大 的 效果不如 层数多且每层的核小一点 的效果好 一般用3x3或5x5 这个就是inception的设计思路 23.信号与处理中 就是那么定义的深度学习只是拿来用用并没纠结细节 24.不管在图片的哪个位置核是不变的 25.只是为了讲课定义的 26.数字信号处理中 可以看看 27.抖动厉害的原因抖动没事只要 呈下降趋势即可但是一直抖不下降是有问题的 1数据多样性很大每次随机采样的数据 区别很大 这样是没事的 可以做平滑好看一点 2学习率很大。可以降低学习率lr 或者batch_size大一点 不是这个意思。 全连接层最大的问题是 权重矩阵W的高好像就是 矩阵的行数取决于 输入的宽 。那么此时当给定的输入是 1200万像素的图片那么 输入维度就是1200万那么权重矩阵参数量太大 就炸掉了。 而 卷积不存在这种问题因为卷积核大小是固定的无论输入的大小是多大而且实际上也不会直接丢进去一个 1200万像素的输入 弹幕说mlp放不下的原因是因为权重参数的矩阵过大 20-卷积层中的填充和步幅 填充和步幅 卷积核大小kernel_size、填充padding、步幅stride都是 超参数 博客 ① 奇数卷积核更容易做padding。我们假设卷积核大小为k * k为了让卷积后的图像大小与原图一样大根据公式可得到paddingk-1/2这里的k只有在取奇数的时候padding才能是整数否则padding不好进行图片填充。 ② k为偶数时p为浮点数所做的操作为一个为向上取整填充一个为向下取整填充。 填充padding 【总结】通常情况下padding的高宽是对称的且取为核大小-1即phkh-1、pwkw-1这个是指课件理论中的 含上下或左右的 某个方向一共填充的大小如果 在代码中 要写为 paddingph/2。从而使得输出形状输入形状 【注意ph、pw与代码中的padding】此处填充ph和pw是指 从高度方向、宽度方向 共填充了多少如 ph2 上下共填充了2行相当于 代码中的padding1。即 对于 卷积核大小为3x3的、padding1代码中写padding1课件理论中ph、pw2二者是二倍的关系 进行卷积操作后输入和输出形状相同对于 5x5的卷积核大小、padding2代码中写padding2课件理论中ph、pw4输入和输出形状相同 nh和nw为输入数据的高、宽 【引言-填充】当不使用padding时经过多层卷积后 形状会变得很小 下图中每一层都会减4第七层大小就变成4X4了 【正文-填充】 【有填充时的输出形状计算】 【注意ph、pw与代码中的padding】此处填充ph和pw是指 从高度方向、宽度方向 共填充了多少如 ph2 上下共填充了2行相当于 代码中的padding1。即 对于 卷积核大小为3x3的、padding1 进行卷积操作后输入和输出形状相同对于 5x5的卷积核大小、padding2输入和输出形状相同 p为padding当 按下图中通常方式取ph和pw即phkh-1、pwkw-1时无论核的大小如何输出和输入的形状相同 一般来说很少用核长宽为偶数的卷积核 下图中的类似[ ] 的是向上、下取整 步幅stride 【引言-步幅】 【正文-步幅】每次移动核时可以 一次向右和向下 移动几格 下图中第一个图的两个蓝色区域是 分别从 起点即左上角向右移动一次2步幅、向下移动一次3步幅。 当继续移动 剩余区域不够时就不移动了 【有步幅时的输出形状计算】 根据公式如果 stride2那么 输出尺寸的高宽相当于减半 类似中括号的是 floor向下取整 代码 【通常情况下都是对称的】输入的数据形状是 高宽相同的padding是对称的stride也是对称的 【注意ph、pw与代码中的padding】此处填充ph和pw是指 从高度方向、宽度方向 共填充了多少如 ph2 上下共填充了2行相当于 代码中的padding1。即 对于 卷积核大小为3x3的、padding1 进行卷积操作后输入和输出形状相同 # 在所有侧边填充1个像素 import torch from torch import nndef comp_conv2d(conv2d, X): # conv2d 作为传参传进去在内部使用# 在维度前面加入一个批量大小数batch_size和通道数channel因为暂时没考虑批量大小数和通道数X X.reshape((1,1)X.shape) Y conv2d(X) # 卷积处理是一个四维的矩阵return Y.reshape(Y.shape[2:]) # 将前面两个维度拿掉# 【填充】在所有侧边分别填充1个像素 conv2d nn.Conv2d(1,1,kernel_size3,padding1) # padding1 为左右都填充一行相当于之前讲的ph、pw2 X torch.rand(size(8,8)) print(comp_conv2d(conv2d,X).shape) # torch.Size([8, 8]) 即没改变输入的形状 # 【填充】填充不同的高度和宽度核的形状为5x3, 填充时上下分别填充2行、左右分别填充1列 conv2d nn.Conv2d(1,1,kernel_size(5,3),padding(2,1)) print(comp_conv2d(conv2d,X).shape) # torch.Size([8, 8]) 即没改变输入的形状# 【填充步幅】将高度和宽度的步幅设置为2 conv2d nn.Conv2d(1,1,kernel_size3,padding1,stride2) print(comp_conv2d(conv2d,X).shape) # torch.Size([4, 4])。 # 因为步幅sh、sw为2可以被输入的高、宽整除因此输出为(nh/sh x nw/sw)# 【填充步幅】一个稍微复杂的例子 conv2d nn.Conv2d(1,1,kernel_size(3,5),padding(0,1),stride(3,4)) print(comp_conv2d(conv2d,X).shape) # torch.Size([2, 2]) 。 套公式计算QA ppt错了55层 重要程度核大小 填充通常取默认的、步幅取值取决于你要把你的模型大小控制在什么程度 卷积核大小kernel_size 填充padding通常ph和pw取值为 卷积核大小-1 从而实现 卷积核不改变输入形状大小注意 如果是代码中 padding1 相当于课件中的ph、pw2 步幅stride通常padding1因为如果每层都减半经过几个卷积层后 图片就很小 几乎没了 这样就 做不了深的神经网络了因此减半是个别情况。 不为1时 是因为计算量太大了此时通常步幅取2。步幅越大计算量越小步幅越小模型所需层数就很大因为一般是 想将一个很大的输入图片 变成一个很小的 3.是的。因为padding课件理论中kernel-1而padding是分在图片上下的kernel为基数padding就可以对半分。 注意 课件理论中的 ph、pw 除以2才为代码中的 padding 当然也可以取偶数 4.看第二个问题 减半是很少的情况大多数情况是不变的 padding、stride、通道数这些是神经网络架构设计的一部分当用不同的神经网络时 一般都会告诉你这些参数如何设定 6.一般来说很少会自己纯手写神经网络 如用ResNetkaiming大神的残差神经网络就够了其也分很多系列。除非你的输入是非常不一样的情况如 是20x1000很扁的这种可能需要自己设计神经网络否则一般用经典的即可 或 在经典的基础上做调整。 即便自己设计神经网络也是参照经典神经网络的基础上 7.回看代码 8.回看代码 9.不存在这种情况 虽然单独看3x3很小但是 如果神经网络很深时 较深的层中的每个元素 能看到 足够大的图片信息 高层会看到低层所看到信息总和 对于后面比较深的卷积层中的 1x1、3x3这种其实 每个元素对应的是 较浅层中很大的图片范围的看到的信息并不小 11.NASNeural Network Architecture Search也是自动机器学习的一部分 弹幕说autodl和automl计算成本太高不是一般人研究的起的 1方式一设计很多神经网络结构从中选择效果最好的 12.从信息论的角度来说特征信息肯定会丢失的 ML本质是一个极端的压缩算法给你一个图片最后得到一个类别、有语义信息的数值。 即把 比较原始的计算机能理解的像素信息、文字字符串的信息压缩到人能理解的 语义空间中 13.有但是成本极大沐神的一个实验跑了100w美金 14.同13 15.是可以人为控制的 16.从理论上来说大概是三个3x3卷积核的效果是可以用2个5x5卷积核来替代的10层3x3卷积的效果可以等效成5或6层 的5x5的卷积 但是3x3卷积更快涉及计算复杂度、成本方面的问题、更“贵” 17.可以这样用。但是一般来说简单高效易懂的更容易被人记住即类似 都用比较简单的核。 太复杂的 可以不容易被人理解 18.后面会讲不同的卷积层 可以看不同的纹理特征 DL不是有钱人的游戏。 如果不用DL 1、用人机器成本可能会低点可能效果差就需要更多的调参即人力成本。 2、其次数据成本很大数据很贵 DL使用GPU的算力来替代 人力成本和数据成本 虽然计算算力变高。 NAS现在是有钱人的游戏但是任何科技都是从很贵到很便宜的过程如当年的磁盘计算机也很贵 21-卷积层里的多输入和多输出 输出通道是当前卷积层的超参数 输入通道是 上一个卷积层的 超参数即上一个卷积层的输出通道 多输入输出通道 引言 之前Fashion mnist是单通道只有一个灰 正文-多个输入通道 【多个输入通道】 如下图通道0的数据和通道0的卷积核做点积运算同理通道1最后将两个通道的结果相加 现在假定输入数据X是三维的tensor即三个通道则卷积核也变成了三维的与输入数据维度相同每个通道都有一个 偏移即长为ci的向量此处只是没写 iinput 输出是单通道的因为不管输入有多少个通道都是最后按通道相加 正文-多个输出通道 【多个输出通道】 多个输入通道和多个输出通道其实是没有相关性的可以分别设置 【个人理解暂时没问题】输出通道数卷积核个数即下图中co 对于每个输出的通道都有一个自己的三维卷积核 cooutput channel 弹幕说这里等于就是利用多个卷积核分别对输入进行上一页PPT的卷积操作最后将结果分通道叠在一起。ci个通道每个通道co种卷积核共有ci*co种卷积核。 老师说对每一个输入下图中第一个红框把它对应的一个输出通道的核拿出来第二个红框就会得到一个对应的输出通道第三个红框对每一个输出通道一一这样运算最后将结果concat起来得到输出Y Yi,:,:输出里面的第i个通道 【多个输入和多个输出通道的意义】 多输出通道每个输出通道可以取识别一种模式如不同的卷积核 可以提取不同 角度的特征如 边缘、锐化、颜色、纹理等通过学习不同的卷积核权重 来匹配不同的模式如下图中有6个输出通道 多输入通道假设将上一层 得到的六个输出通道的结果 丢给下一层将每个通道的到的结果组合起来如 加权相加得到组合的模式识别。这是对于相邻的两层从整体的深度网络来看浅层、下面的层识别 具体细节特征如 边缘特征、纹理等 深层次的层可以将之前浅层得到的 分别的特征模式进行组合如 将 胡须、眼睛等 组合起来 得到一个猫头最深层、最高层 可能得到一整只猫 1x1卷积层 【1x1卷积层可以认为是卷积层也可以等价认为是一个全连接层】 【作用】不识别空间模式只是融合通道对每个像素所对应的通道的向量 做一个全连接层然后该全连接层对每个像素分别作用一遍Conv 1×1 一般只改变输出通道数而不改变输出的宽度和高度而Pooling 操作一般只改变输出的宽和高而不改变通道数 卷积核的高宽均为1每次只看一个像素即不看 周围空间的特征即其不识别空间信息不看当前这个像素与周围其他像素的关系 本质上等价于一个 形状为nhnw x ci、权重为co x ci x 1 x 1的全连接层 输出为0的通道输出为1的通道 弹幕说 1.其实就是对input里的3个矩阵做全连接这里是做了两次不同权重的全连接 2. 3个输入通道经过一个核得到一个输出通道这里有两个核所以得到两个输出通道 3. 对的这里理解为两组核或者两套核比较好一些一组核包括三个核 最通用情况下的二维卷积层 【偏差B的理解弹幕说】 每一个卷积核都对应一个单独的偏差 pytorch的官方文档bias是和卷积核个数相同 其实就是Co组核每组核有Ci个偏差 这里B是用了广播机制不确定 【计算复杂度的理解】 可以这么理解输出层共有CoMhMw个元素每个元素都是size大小为CiKhKw的卷积核计算得到的 代码 多输入通道互相关计算 【zip的作用】 弹幕 zip(X, K)函数可以将X和K的每个通道配对返回一个可迭代对象其中每个元素是一个(x, k)的元组表示一个输入通道和一个卷积核。 zip函数用于将可迭代的对象作为参数将对象中对应的元素打包成一个个元组然后返回由这些元组组成的列表。 多输出通道的互相关计算 torch.stack():沿着一个新维度对输入张量序列进行连接序列中所有的张量都应该为相同形状 下图中即在dim0这个维度上 进行堆叠 三个卷积核每个卷积核有两个通道每个通道是2*2的矩阵 # 多输入通道互相关运算 import torch from d2l import torch as d2l from torch import nn# 多通道输入时的互相关运算 def corr2d_multi_in(X,K): # 此处假设X和K都是3D的return sum(d2l.corr2d(x,k) for x,k in zip(X,K)) # X,K为3通道矩阵for使得对最外面通道进行遍历 # zip(X, K)函数可以将X和K的每个通道配对返回一个可迭代对象其中每个元素是一个(x, k)的元组表示一个输入通道和一个卷积核。X torch.tensor([[[0.0,1.0,2.0],[3.0,4.0,5.0],[6.0,7.0,8.0]],[[1.0,2.0,3.0],[4.0,5.0,6.0],[7.0,8.0,9.0]]]) K torch.tensor([[[0.0,1.0],[2.0,3.0]],[[1.0,2.0],[3.0,4.0]]]) print(corr2d_multi_in(X,K))# 多输出通道运算 def corr2d_multi_in_out(X,K): # X为3通道矩阵K为4通道矩阵最外面维为输出通道 # 弹幕说就是从4D的K中拿出一个3D的k进行上一步操作# 大K中每个小k是一个3D的Tensor。0表示stack堆叠函数里面在0这个维度堆叠。 return torch.stack([corr2d_multi_in(X,k) for k in K],0) print(K.shape) print((K1).shape) print((K2).shape) print(K:,K) print(K1) K torch.stack((K, K1, K2),0) # 原来的K是3D的现在使用stack创建一个 三输出通道的新K print(K.shape) # torch.Size([3, 2, 2, 2]) : 输出通道为3输入通道为2h、w分别为2 print(新的K:,K) print(corr2d_multi_in_out(X,K))1x1卷积 验证一下 1x1的卷积 等价于 一个全连接 # 【定义一个用全连接实现 1x1的 多输入多输出通道 的互相关操作】1×1卷积的多输入、多输出通道运算 def corr2d_multi_in_out_1x1(X,K):c_i, h, w X.shape # 输入的通道数、宽、高c_o K.shape[0] # 输出的通道数X X.reshape((c_i, h * w)) # 拉平操作把高宽拉成一个向量每一行表示一个通道的特征。此时X是一个矩阵K K.reshape((c_o,c_i)) # 原K完整是 co x ci x 1 x 1去掉1x1后 K也是一个矩阵Y torch.matmul(K,X) return Y.reshape((c_o, h, w))X torch.normal(0,1,(3,3,3)) # norm函数生成0到1之间的(3,3,3)矩阵 K torch.normal(0,1,(2,3,1,1)) # 输出通道是2输入通道是3核是1X1Y1 corr2d_multi_in_out_1x1(X,K) Y2 corr2d_multi_in_out(X,K) assert float(torch.abs(Y1-Y2).sum()) 1e-6 print(float(torch.abs(Y1-Y2).sum()))QA 20.输入通道基本是固定的 因为输入是给定的。输出通道理论上可以设为任意值虽然实际上肯定不能随便设 【直观理解】一般来说输入和输出的数据 高宽不变时 输出通道也会设为和输入通道一致。 但是如果输出的数据 高宽都减半了那么 输出通道数 会 设为 输入通道数的二倍即 把空间信息压缩了 并把提取出的信息在更多的通道上存储起来 21.不会影响模型的精度、模型的性能当然 很多0会影响计算性能计算变慢了 22.每个通道上的卷积核是不一样的一般来说不同通道的卷积核大小是一样的这样方便计算、计算上的效率更高当然理论上也可以让不同通道的卷积核大小不同 23.偏移的影响并不是很大况且后续还有BN的存在而且几乎不会对计算性能产生影响 24.核的参数是学习出来的 不是的。有深度图信息后要使用三维卷积此时输入数据变为 4D的即 输入通道 x 深度 x 宽 x 高核变为5D的输出为4D的 26.对于多输入通道一个输入通道有一个卷积核 得到一个计算结果 多个输入通道计算结果会累加。 多输出通道数 取决于co与 多输入通道数的独立的 三维卷积核是五维的 含 输入通道、输出通道、高、宽、深度信息 27.信号处理区分高低频图像里面好像不太注重这个。 数据丢进去 网络自己学习 28.卷积核的高宽均为1每次只看一个像素即不看 周围空间的特征即其不识别空间信息不看当前这个像素与周围其他像素的关系 29.是的。这个就是mobile net音译移动端用的卷积神经网络计算复杂度很低 30.卷积有位置信息而且对位置很敏感。 输出数据中第i行第j列的元素 就是对应 输入数据中第i行第j列元素附近那一块的信息。 因此 卷积输出的那些信息、位置信息 是 输出的元素在矩阵中的位置决定的后续会讲基于 池化层 使得不对位置那么敏感。 31.通道之间是不共享参数的我们希望每个通道能学习到不同的东西、模式。 弹幕说同一卷积层共享参数通道之间的不共享 卷积层参数共享指的是整个图像用同一个卷积核来扫描和全连接网络相比共享了参数。 可以把 计算复杂度中的 mh和mw用 含nh nw去替换因为 mh mw就是通过nh nw计算出来的。 只是用mh、mw表示 会简单一点且可以直观看出 计算复杂度与 输出数据中高宽的关系 33.同32 34.我们无法控制每个卷积核究竟能提取到什么信息核参数都是学习出来的。 当然 一般需要多次卷积 即深度卷积神经网络。 35.需要save和load 老师一般用 vim VSCode 弹幕说Vscode安装jupyterlab插件简直不要太爽 36.正确。 37.feature map就是卷积的输出 38.输入通道不是动态变化的。 39.奇数在padding时方便一点。 40.rgbd可以用3D卷积也可以用2D卷积每个深度做一个2D卷积然后用RNN或直接concat起来 本次课程不会讲3D卷积其在视频中用的多其效果稍微比2D卷积好一点点、但是计算复杂度高很多
http://www.pierceye.com/news/101324/

相关文章:

  • 建怎样的网站挣钱快网站怎么做微博认证吗
  • 衡水做网站改版网站开发教程流程
  • 鞍山网站制作人才招聘广州网站优化步骤
  • 网站使用微信支付宁国网络推广
  • 成都网站建设六六济南网站制作公司
  • c 网站开发技术链友咨询
  • 手机网站推荐怎样做网站建设
  • 下载学校网站模板下载安装住建部官网查询
  • 模板网站新增备案两次都未通过网站也打不开电子商务网站建设实训报告文章
  • 做标签网站是干嘛的帐号售卖网站建设
  • 建设市民中心网站wordpress只显示标题插件
  • 网站备案的好处鲜花网站建设论文百度文库
  • 网站建设运营策划石家庄住房和建设局网站
  • 网站制作器公司网站虚假宣传但网站不是我做的
  • 大淘客网站建设婚庆网页设计作品dw
  • 嘉兴网站关键词优化后端开发流程
  • 有网络网站打不开怎么回事培训机构推广
  • 淄博网站建设优化珍云网站可信图标
  • 大连外贸网站建设江门营销网站建设
  • 县网站建设方案怎么做付费的小说网站
  • 企业公众号以及网站建设我想做个网站
  • 网站设为主页功能怎么做怎样制作h5
  • 网站的内容与功能设计微信公众平台小程序二维码怎么生成
  • 西安网站快速优化重庆明建网络科技有限公司干啥的
  • 广州市天河区门户网站软件制作公司
  • 做网站前期创建文件夹博罗高端网站建设价格
  • 襄阳网站建设价格淄博网站推广价格
  • 网站推广的软件六安网站制作哪里有
  • 大型门户网站模板wordpress有哪些小工具
  • 有flash的网站新闻资讯app制作公司