精华内容
下载资源
问答
  • BP神经网络原理及实现
    千次阅读 多人点赞
    2020-06-27 21:08:21

    BP神经网络原理

    经典的BP神经网络通常由三层组成: 输入层, 隐含层与输出层.通常输入层神经元的个数与特征数相关,输出层的个数与类别数相同, 隐含层的层数与神经元数均可以自定义.
    在这里插入图片描述
    每个神经元代表对数据的一次处理:
    在这里插入图片描述
    每个隐含层和输出层神经元输出与输入的函数关系为:

    在这里插入图片描述

    其中Wij表示神经元i与神经元j之间连接的权重,Oj代表神经元j的输出, sigmod是一个特殊的函数用于将任意实数映射到(0,1)区间.

    上文中的sigmod函数称为神经元的激励函数(activation function), 除了sigmod函数1/1+e^-IL外, 常用还有tanh和ReLU函数.

    我们用一个完成训练的神经网络处理回归问题, 每个样本拥有n个输入.相应地,神经网络拥有n个输入神经元和1个输出神经元.

    实际应用中我们通常在输入层额外增加一个偏置神经元, 提供一个可控的输入修正;或者为每个隐含层神经元设置一个偏置参数.

    我们将n个特征依次送入输入神经元, 隐含层神经元获得输入层的输出并计算自己输出值, 输出层的神经元根据隐含层输出计算出回归值.

    上述过程一般称为前馈(Feed-Forward)过程, 该过程中神经网络的输入输出与多维函数无异.

    现在我们的问题是如何训练这个神经网络.

    作为监督学习算法,BP神经网络的训练过程即是根据前馈得到的预测值和参考值比较, 根据误差调整连接权重Wij的过程.

    训练过程称为反向传播过程(BackPropagation), 数据流正好与前馈过程相反.

    首先我们随机初始化连接权重Wij, 对某一训练样本进行一次前馈过程得到各神经元的输出.

    首先计算输出层的误差:

    Ej=sigmod′(Oj)∗(Tj−Oj)=Oj(1−Oj)(Tj−Oj)

    其中Ej代表神经元j的误差,Oj表示神经元j的输出, Tj表示当前训练样本的参考输出, sigmod′(x)是上文sigmod函数的一阶导数.

    在这里插入图片描述
    计算隐含层误差:

    Ej=sigmod′(Oj)∗∑kEkWjk=Oj(1−Oj)∑kEkWjk

    隐含层输出不存在参考值, 使用下一层误差的加权和代替(Tj−Oj).

    计算完误差后就可以更新Wij和θj:

    Wij=Wij+λEjOi

    其中λ是一个称为学习率的参数,一般在(0,0.1)区间上取值.

    实际上为了加快学习的效率我们引入称为矫正矩阵的机制, 矫正矩阵记录上一次反向传播过程中的EjOi值, 这样Wj更新公式变为:

    Wij=Wij+λEjOi+μCij

    μ是一个称为矫正率的参数.随后更新矫正矩阵:

    Cij=EjOi

    每一个训练样本都会更新一次整个网络的参数.我们需要额外设置训练终止的条件.

    最简单的训练终止条件为设置最大迭代次数, 如将数据集迭代1000次后终止训练.

    单纯的设置最大迭代次数不能保证训练结果的精确度, 更好的办法是使用损失函数(loss function)作为终止训练的依据.

    损失函数可以选用输出层各节点的方差:

    L=∑j(Tj−Oj)2

    为了避免神经网络进行无意义的迭代, 我们通常在训练数据集中抽出一部分用作校验.当预测误差高于阈值时提前终止训练.

    Python实现BP神经网络

    首先实现几个工具函数:

    def rand(a, b):
    	return (b - a) * random.random() + a
    
    def make_matrix(m, n, fill=0.0):  # 创造一个指定大小的矩阵
        mat = []
        for i in range(m):
            mat.append([fill] * n)
        return mat
    

    定义sigmod函数和它的导数:

    def sigmoid(x):
        return 1.0 / (1.0 + math.exp(-x))
    
    def sigmod_derivate(x):
        return x * (1 - x)
    

    定义BPNeuralNetwork类, 使用三个列表维护输入层,隐含层和输出层神经元, 列表中的元素代表对应神经元当前的输出值.使用两个二维列表以邻接矩阵的形式维护输入层与隐含层, 隐含层与输出层之间的连接权值, 通过同样的形式保存矫正矩阵.

    定义setup方法初始化神经网络:

        def setup(self, ni, nh, no):
            self.input_n = ni + 1  # 因为需要多加一个偏置神经元,提供一个可控的输入修正
            self.hidden_n = nh
            self.output_n = no
            # 初始化神经元
            self.input_cells = self.input_n * [1.0]
            self.hidden_cells = self.hidden_n * [1.0]
            self.output_cells = self.output_n * [1.0]
            # 初始化权重矩阵
            self.input_weights = make_matrix(self.input_n, self.hidden_n)
            self.output_weights = make_matrix(self.hidden_n, self.output_n)
            # 权重矩阵随机激活
            for i in range(self.input_n):
                for h in range(self.hidden_n):
                    self.input_weights[i][h] = rand(-0.2, 0.2)
    
            for h in range(self.hidden_n):
                for o in range(self.output_n):
                    self.output_weights[h][o] = rand(-0.2, 0.2)
    
            # 初始化矫正矩阵
            self.input_correction = make_matrix(self.input_n, self.hidden_n)
            self.output_correction = make_matrix(self.hidden_n, self.output_n)
    

    定义predict方法进行一次前馈, 并返回输出:

        def predict(self, inputs):
            # 激活输入层
            for i in range(self.input_n - 1):
                self.input_cells[i] = inputs[i]
            # 激活隐藏层
            for j in range(self.hidden_n):
                total = 0.0
                for i in range(self.input_n):
                    total += self.input_cells[i] * self.input_weights[i][j]
                self.hidden_cells[j] = sigmoid(total)
            for k in range(self.output_n):
                total = 0.0
                for j in range(self.hidden_n):
                    total += self.hidden_cells[j] * self.output_weights[j][k]
                self.output_cells[k] = sigmoid(total)
            return self.output_cells[:]
    

    定义back_propagate方法定义一次反向传播和更新权值的过程, 并返回最终预测误差:

        def back_propagate(self, case, label, learn, correct):
            # 前馈
            self.predict(case)
            # 获取输出层误差
            output_deltas = [0.0] * self.output_n
            for o in range(self.output_n):
                error = label[o] - self.output_cells[o]
                output_deltas[o] = sigmod_derivate(self.output_cells[o]) * error
            # 获取隐藏层误差
            hidden_deltas = [0.0] * self.hidden_n
            for h in range(self.hidden_n):
                error = 0.0
                for o in range(self.output_n):
                    error += output_deltas[o] * self.output_weights[h][o]
                hidden_deltas[h] = sigmod_derivate(self.hidden_cells[h]) * error
            # 更新输出权重
            for h in range(self.hidden_n):
                for o in range(self.output_n):
                    # Wij=Wij+λEjOi+μCij
                    change = output_deltas[o] * self.hidden_cells[h]
                    self.output_weights[h][o] += learn * change + correct * self.output_correction[h][o]
            # 更新输入权重
            for i in range(self.input_n):
                for h in range(self.hidden_n):
                    # Wij=Wij+λEjOi+μCij
                    change = hidden_deltas[h] * self.input_cells[i]
                    self.input_weights[i][h] += learn * change + correct * self.input_correction[i][h]
                    self.input_correction[i][h] = change
    
            # 获取全局误差
            error = 0.0
            for o in range(len(label)):
                error += 0.5 * (label[o] - self.output_cells[o]) ** 2
            return error
    

    定义train方法控制迭代, 该方法可以修改最大迭代次数, 学习率λ, 矫正率μ三个参数.

        def train(self, cases, labels, limit=10000, learn=0.05, correct=0.1):
            for i in range(limit):
                error = 0.0
                for i in range(len(cases)):
                    label = labels[i]
                    case = cases[i]
                    error += self.back_propagate(case, label, learn, correct)
    

    编写test方法,演示如何使用神经网络学习异或逻辑:

    def test(self):
    	cases = [
                [00][01][10][11]]
    	labels = [[0][1][1][0]]
    	self.setup(251)  # 设置各层的神经元数量
    	self.train(cases, labels, 100000.50.1)
    	for case in cases:
    		print(self.predict(case))
    

    运行结果:
    在这里插入图片描述

    总结

    BP神经网络的理解主要难点在于各层误差和权重的更新上面,涉及到一系列数学公式,只要把数学公式弄懂就会理解代码为什么这样做.

    更多相关内容
  • 卷积神经网络原理

    千次阅读 2022-03-23 12:33:42
    简单快速了解卷积神经网络(CNN)原理

    Convolutional Neural Network(CNN)

    • 卷积层
    • 池化层(Pooling)
    • 归一化
    • 全连接
    • 把全连接层转化成卷积层

    ConvNets

    卷积神经网络的结构基于一个假设,即输入数据是图像,基于该假设,我们就向结构中添加了一些特有的性质。这些特有属性使得前向传播函数实现起来更高效,并且大幅度降低了网络中参数的数量。

    常规神经网络

    常规神经网络,神经网络的输入是一个向量,然后在一系列的隐层中对它做变换。每个隐层都是由若干的神经元组成,每个神经元都与前一层中的所有神经元连接。
    在这里插入图片描述

    举例说来,一个尺寸为200x200x3的图像,会让神经元包含200x200x3=120,000个权重值。而网络中肯定不止一个神经元,那么参数的量就会快速增加!显而易见,这种全连接方式效率低下,大量的参数也很快会导致网络过拟合。

    ConvNets

    在这里插入图片描述

    计算机认识的图片:一个有长宽的矩阵,再加上一个通道数;在RGB图片里有3个通道,R\G\B.

    一个简单的卷积神经网络是由各种层按照顺序排列组成,网络中的每个层使用一个可以微分的函数将激活数据从一个层传递到另一个层。卷积神经网络主要由三种类型的层构成:卷积层,池化(Pooling)层和全连接层(全连接层和常规神经网络中的一样)。通过将这些层叠加起来,就可以构建一个完整的卷积神经网络。

    卷积层

    卷积层是构建卷积神经网络的核心层,它产生了网络中大部分的计算量。

    如何简化计算?
    • 让不同的神经元守备不同区域
    • 共享参数
    input
    41008102
    41018002
    41008102
    40018202
    40008002
    41018102
    filter
    010
    010
    010

    在这里插入图片描述

    在前向传播的时候,让每个filter都在输入数据的宽度和高度上滑动(更精确地说是卷积),然后计算整个filter和输入数据任一处的内积。当filter沿着输入数据的宽度和高度滑过后,会生成一个2维的激活图(activation map),激活图给出了在每个空间位置处Receptive field的反应。直观地来说,网络会让filter学习到当它看到某些类型的视觉特征时就激活,具体的视觉特征可能是某些方位上的边界,或者在第一层上某些颜色的斑点.

    在这里插入图片描述

    一个channel的卷积

    在这里插入图片描述

    在每个卷积层上,我们会有一排的filter(比如16个、32、64个,需要多少个,自己定,你开心就好),每个都会生成一个不同的二维激活图。将这些激活映射在深度方向上层叠起来就生成了输出数据。

    在这里插入图片描述

    例如,在100 * 100 * 3的输入下,我定了第一层的 filter 为64个,stride=1,那么输出将是 98 * 98 * 64的矩阵

    一个filter就是一个神经元,当它滑向下一区域时,就相当于切换到下一区域的神经元,这些神经元共享同一组参数也就是filter里的参数,你定了64个filter那么将有64组filter分别扫过一整张图片.

    动画演示

    https://cs231n.github.io/assets/conv-demo/index.html

    例1:假设输入数据体尺寸为[32x32x3](比如CIFAR-10的RGB图像),如果Receptive field是5x5,那么卷积层中的每个神经元会有输入数据体中[5x5x3]区域的权重,共5x5x3=75个权重(还要加一个偏差参数)。注意这个连接在深度维度上的大小必须为3,和输入数据体的深度一致。

    例2:假设输入数据体的尺寸是[16x16x20],filter尺寸是3x3,那么卷积层中每个神经元和输入数据体就有3x3x20=180个连接。再次提示:在空间上连接是局部的(3x3),但是在深度上是和输入数据体一致的(20)。

    怎么控制输出数据?

    3个超参数控制着输出数据体的尺寸:深度(depth),步长(stride)和填充(padding)。

    • 首先,输出数据体的深度是一个超参数:它和使用的filter的数量一致,而每个filter在输入数据中寻找一些不同的东西。举例来说,如果第一个卷积层的输入是原始图像,那么在深度维度上的不同神经元将可能被不同方向的边界,或者是颜色斑点激活。我们将这些沿着深度方向排列、filter相同的神经元集合称为深度列(depth column),也有人使用纤维(fibre)来称呼它们。
    • 其次,在滑动filter的时候,必须指定步长。当步长为1,滤波器每次移动1个像素。当步长为2(或者不常用的3,或者更多,这些在实际中很少使用),filter滑动时每次移动2个像素。这个操作会让输出数据体在空间上变小。
    • 在下文可以看到,有时候将输入数据体用0在边缘处进行填充是很方便的。这个零填充(zero-padding)的尺寸是一个超参数。零填充有一个良好性质,即可以控制输出数据体的空间尺寸(最常用的是用来保持输入数据体在空间上的尺寸,这样输入和输出的宽高都相等)(你可以用0填充,也可以用均值填充,根据需求,你喜欢就好)。

    如何抓取特征

    在这里插入图片描述

    当图片上出现与filter相似的特征时,输出的值会有明显变化,训练时根据这种变化,网络会调整参数,让filter记住这个特征.

    池化层

    在这里插入图片描述

    为了控制数据体的大小,通常,在连续的卷积层之间会周期性地插入一个池化层。这样的话就能减少网络中参数的数量,使得计算资源耗费变少,也能有效控制过拟合。池化层使用MAX操作(不一定非要MAX Pooling也可以mean等等,你喜欢),对输入数据体的每一个深度切片独立进行操作,改变它的空间尺寸。最常见的形式是池化层使用尺寸2x2的filter,以步长为2来对每个深度切片进行降采样,将其中75%的激活信息都丢掉。每个MAX操作是从4个数字中取最大值(也就是在深度切片中某个2x2的区域)。深度保持不变。

    在这里插入图片描述

    是不是一定非要用池化层?

    答案是否定的。不是非得用池化,我用池化就一定好。举个栗子,Alpha Go论文中有提到,网络是19 * 19的输入,而恰巧围棋棋盘就是19*19路,Alpha Go设计者就把每一步棋子在棋盘的位置当成一张图片,那么网络就可以用CNN,而确实是用的CNN,那么在这上面使用池化的话会发生什么?会丢了棋子信息,因为每一个棋子都会影响棋局的走势,所有不能丢失任一处的棋子信息。

    归一化层

    在卷积神经网络的结构中,提出了很多不同类型的归一化层,有时候是为了实现在生物大脑中观测到的抑制机制。但是这些层渐渐都不再流行,因为实践证明它们的效果即使存在,也是极其有限的。

    全连接层

    在全连接层中,神经元对于前一层中的所有激活数据是全部连接的,这个常规神经网络中一样。

    在这里插入图片描述

    网络结构

    卷积神经网络通常是由三种层构成:卷积层,池化层(除非特别说明,一般就是最大值池化)和全连接层(简称FC)。ReLU激活函数也应该算是是一层,它逐元素地进行激活函数操作。在本节中将讨论在卷积神经网络中这些层通常是如何组合在一起的。

    层的排列规律

    卷积神经网络最常见的形式就是将一些卷积层和ReLU层放在一起,其后紧跟池化层,然后重复如此直到图像在空间上被缩小到一个足够小的尺寸,在某个地方过渡成成全连接层也较为常见。最后的全连接层得到输出,比如分类评分等。

    • INPUT -> FC,实现一个线性分类器,此处N = M = K = 0。
    • INPUT -> CONV -> RELU -> FC
    • INPUT -> [CONV -> RELU -> POOL]*2 -> FC -> RELU -> FC。此处在每个汇聚层之间有一个卷积层。
    • INPUT -> [CONV -> RELU -> CONV -> RELU -> POOL]*3 -> [FC -> RELU]*2 -> FC。此处每个汇聚层前有两个卷积层,这个思路适用于更大更深的网络,因为在执行具有破坏性的池化操作前,多重的卷积层可以从输入数据中学习到更多的复杂特征。

    层的尺寸设置规律

    • 输入层(包含图像的)应该能被2整除很多次。常用数字包括32(比如CIFAR-10),64,96(比如STL-10)或224(比如ImageNet卷积神经网络),384和512。
    • 卷积层 应该使用小尺寸滤波器(比如3x3或最多5x5),使用步长1 。还有一点非常重要,就是对输入数据进行零填充,这样卷积层就不会改变输入数据在空间维度上的尺寸。
    • 池化层 负责对输入数据的空间维度进行降采样。最常用的设置是用用2x2Receptive field的最大值池化,步长为2。注意这一操作将会把输入数据中75%的激活数据丢弃(因为对宽度和高度都进行了2的降采样)。 另一个不那么常用的设置是使用3x3的Receptive field,步长为2。最大值池化的Receptive field尺寸很少有超过3的,因为池化操作过于激烈,易造成数据信息丢失,这通常会导致算法性能变差。

    减少尺寸设置的问题:上文中展示的两种设置是很好的,因为所有的卷积层都能保持其输入数据的空间尺寸,汇聚层只负责对数据体从空间维度进行降采样。如果使用的步长大于1并且不对卷积层的输入数据使用零填充,那么就必须非常仔细地监督输入数据体通过整个卷积神经网络结构的过程,确认所有的步长和滤波器都尺寸互相吻合

    为什么在卷积层使用1的步长? 在实际应用中,更小的步长效果更好。上文也已经提过,步长为1可以让空间维度的降采样全部由汇聚层负责,卷积层只负责对输入数据体的深度进行变换。
    为何使用零填充? 使用零填充除了前面提到的可以让卷积层的输出数据保持和输入数据在空间维度的不变,还可以提高算法性能。如果卷积层值进行卷积而不进行零填充,那么数据体的尺寸就会略微减小,那么图像边缘的信息就会过快地损失掉。

    网络结构例子:

    一个用于CIFAR-10图像数据分类的卷积神经网络的结构可以是[输入层-卷积层-ReLU层-汇聚层-全连接层]。细节如下:

    • 输入[32x32x3]存有图像的原始像素值,本例中图像宽高均为32,有3个颜色通道。
    • 卷积层中,神经元与输入层中的一个局部区域相连,每个神经元都计算自己与输入层相连的小区域与自己权重的内积。卷积层会计算所有神经元的输出。如果我们使用12个滤波器(也叫作核),得到的输出数据体的维度就是[32x32x12]。
    • ReLU层将会逐个元素地进行激活函数操作,比如使用以0为阈值的 作为激活函数。该层对数据尺寸没有改变,还是[32x32x12]。
    • 池化层在在空间维度(宽度和高度)上进行降采样(downsampling)操作,数据尺寸变为[16x16x12]。
    • 全连接层将会计算分类评分,数据尺寸变为[1x1x10],其中10个数字对应的就是CIFAR-10中10个类别的分类评分值。正如其名,全连接层与常规神经网络一样,其中每个神经元都与前一层中所有神经元相连接。

    由此看来,卷积神经网络一层一层地将图像从原始像素值变换成最终的分类评分值。其中有的层含有参数,有的没有。具体说来,卷积层和全连接层(CONV/FC)对输入执行变换操作的时候,不仅会用到激活函数,还会用到很多参数(神经元的突触权值和偏差)。而ReLU层和汇聚层则是进行一个固定不变的函数操作。卷积层和全连接层中的参数会随着梯度下降被训练,这样卷积神经网络计算出的分类评分就能和训练集中的每个图像的标签吻合了。

    小结:
    • 简单案例中卷积神经网络的结构,就是一系列的层将输入数据变换为输出数据(比如分类评分)。
    • 卷积神经网络结构中有几种不同类型的层(目前最流行的有卷积层、全连接层、ReLU层和汇聚层)。
    • 每个层的输入是3D数据,然后使用一个可导的函数将其变换为3D的输出数据。
    • 有的层有参数,有的没有(卷积层和全连接层有,ReLU层和汇聚层没有)。

    案例学习

    下面是卷积神经网络领域中比较有名的几种结构:

    • LeNet: 第一个成功的卷积神经网络应用,是Yann LeCun在上世纪90年代实现的。当然,最著名还是被应用在识别数字和邮政编码等的LeNet结构。
    • AlexNet: AlexNet卷积神经网络在计算机视觉领域中受到欢迎,它由Alex Krizhevsky,Ilya Sutskever和Geoff Hinton实现。AlexNet在2012年的ImageNet ILSVRC 竞赛中夺冠,性能远远超出第二名(16%的top5错误率,第二名是26%的top5错误率)。这个网络的结构和LeNet非常类似,但是更深更大,并且使用了层叠的卷积层来获取特征(之前通常是只用一个卷积层并且在其后马上跟着一个汇聚层)。
    • ZF Net: Matthew Zeiler和Rob Fergus发明的网络在ILSVRC 2013比赛中夺冠,它被称为ZFNet(Zeiler &Fergus Net的简称)。它通过修改结构中的超参数来实现对AlexNet的改良,具体说来就是增加了中间卷积层的尺寸,让第一层的步长和滤波器尺寸更小。
    • GoogLeNet: ILSVRC 2014的胜利者是谷歌的Szeged等实现的卷积神经网络。它主要的贡献就是实现了一个奠基模块,它能够显著地减少网络中参数的数量(AlexNet中有60M,该网络中只有4M)。还有,这个论文中没有使用卷积神经网络顶部使用全连接层,而是使用了一个平均汇聚,把大量不是很重要的参数都去除掉了。GooLeNet还有几种改进的版本,最新的一个是Inception-v4。
    • VGGNet: ILSVRC 2014的第二名是Karen Simonyan和 Andrew Zisserman实现的卷积神经网络,现在称其为VGGNet。它主要的贡献是展示出网络的深度是算法优良性能的关键部分。他们最好的网络包含了16个卷积/全连接层。网络的结构非常一致,从头到尾全部使用的是3x3的卷积和2x2的汇聚。他们的预训练模型是可以在网络上获得并在Caffe中使用的。VGGNet不好的一点是它耗费更多计算资源,并且使用了更多的参数,导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层。后来发现这些全连接层即使被去除,对于性能也没有什么影响,这样就显著降低了参数数量。
    • ResNet: 残差网络(Residual Network)是ILSVRC2015的胜利者,由何恺明等实现。它使用了特殊的跳跃链接,大量使用了批量归一化(batch normalization)。这个结构同样在最后没有使用全连接层。读者可以查看何恺明的的演讲(视频,PPT),以及一些使用Torch重现网络的实验。ResNet当前最好的卷积神经网络模型(2016年五月)。何开明等最近的工作是对原始结构做一些优化,可以看论文 Identity Mappings in Deep Residual Networks,2016年3月发表。

    把全连接层转化成卷积层(摘自CS231n课程笔记翻译:卷积神经网络笔记)

    全连接层和卷积层之间唯一的不同就是卷积层中的神经元只与输入数据中的一个局部区域连接,并且在卷积列中的神经元共享参数。然而在两类层中,神经元都是计算点积,所以它们的函数形式是一样的。因此,将此两者相互转化是可能的:

    • 对于任一个卷积层,都存在一个能实现和它一样的前向传播函数的全连接层。权重矩阵是一个巨大的矩阵,除了某些特定块(这是因为有局部连接),其余部分都是零。而在其中大部分块中,元素都是相等的(因为参数共享)。
    • 相反,任何全连接层都可以被转化为卷积层。比如,一个 的全连接层,输入数据体的尺寸是,这个全连接层可以被等效地看做一个的 卷积层。换句话说,就是将滤波器的尺寸设置为和输入数据体的尺寸一致了。因为只有一个单独的深度列覆盖并滑过输入数据体,所以输出将变成 ,这个结果就和使用初始的那个全连接层一样了。

    全连接层转化为卷积层:在两种变换中,将全连接层转化为卷积层在实际运用中更加有用。假设一个卷积神经网络的输入是224x224x3的图像,一系列的卷积层和汇聚层将图像数据变为尺寸为7x7x512的激活数据体(在AlexNet中就是这样,通过使用5个汇聚层来对输入数据进行空间上的降采样,每次尺寸下降一半,所以最终空间尺寸为224/2/2/2/2/2=7)。从这里可以看到,AlexNet使用了两个尺寸为4096的全连接层,最后一个有1000个神经元的全连接层用于计算分类评分。我们可以将这3个全连接层中的任意一个转化为卷积层:

    • 针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为 ,这样输出数据体就为[1x1x4096]了。
    • 针对第二个全连接层,令其滤波器尺寸为 ,这样输出数据体为[1x1x4096]。
    • 对最后一个全连接层也做类似的,令其 ,最终输出为[1x1x1000]

    实际操作中,每次这样的变换都需要把全连接层的权重W重塑成卷积层的滤波器。那么这样的转化有什么作用呢?
    它在下面的情况下可以更高效:让卷积网络在一张更大的输入图片上滑动(译者注:即把一张更大的图片的不同区域都分别带入到卷积网络,得到每个区域的得分),得到多个输出,这样的转化可以让我们在单个向前传播的过程中完成上述的操作。

    举个例子,如果我们想让224x224尺寸的浮窗,以步长为32在384x384的图片上滑动,把每个经停的位置都带入卷积网络,最后得到6x6个位置的类别得分。上述的把全连接层转换成卷积层的做法会更简便。如果224x224的输入图片经过卷积层和汇聚层之后得到了[7x7x512]的数组,那么,384x384的大图片直接经过同样的卷积层和汇聚层之后会得到[12x12x512]的数组(因为途径5个汇聚层,尺寸变为384/2/2/2/2/2 = 12)。然后再经过上面由3个全连接层转化得到的3个卷积层,最终得到[6x6x1000]的输出(因为(12 - 7)/1 + 1 = 6)。这个结果正是浮窗在原图经停的6x6个位置的得分!(译者注:这一段的翻译与原文不同,经过了译者较多的修改,使更容易理解)

    面对384x384的图像,让(含全连接层)的初始卷积神经网络以32像素的步长独立对图像中的224x224块进行多次评价,其效果和使用把全连接层变换为卷积层后的卷积神经网络进行一次前向传播是一样的。

    自然,相较于使用被转化前的原始卷积神经网络对所有36个位置进行迭代计算,使用转化后的卷积神经网络进行一次前向传播计算要高效得多,因为36次计算都在共享计算资源。这一技巧在实践中经常使用,一次来获得更好的结果。比如,通常将一张图像尺寸变得更大,然后使用变换后的卷积神经网络来对空间上很多不同位置进行评价得到
    分类评分,然后在求这些分值的平均值。

    最后,如果我们想用步长小于32的浮窗怎么办?用多次的向前传播就可以解决。比如我们想用步长为16的浮窗。那么先使用原图在转化后的卷积网络执行向前传播,然后分别沿宽度,沿高度,最后同时沿宽度和高度,把原始图片分别平移16个像素,然后把这些平移之后的图分别带入卷积网络。(译者注:这一段的翻译与原文不同,经过了译者较多的修改,使更容易理解)

    参考台湾大学李宏毅老师的机器学习课程
    参考由杜客和猴子翻译,堃堃和李艺颖进行校对修改的cs231n笔记。来自网址:https://zhuanlan.zhihu.com/p/22038289
    图片分别平移16个像素,然后把这些平移之后的图分别带入卷积网络。(译者注:这一段的翻译与原文不同,经过了译者较多的修改,使更容易理解)
    
    
    

    参考台湾大学李宏毅老师的机器学习课程
    参考由杜客和猴子翻译,堃堃和李艺颖进行校对修改的cs231n笔记。来自网址:https://zhuanlan.zhihu.com/p/22038289

    2021-6-15
    
    展开全文
  • P2P对等网络原理与应用

    热门讨论 2014-03-11 14:13:00
    P2P对等网络原理与应用
  • 无线网络原理知识总结

    千次阅读 2020-09-10 11:09:21
    无线网络原理 无线网络传输技术 WLAN的MAC层关键技术 WLAN的组建 IEEE802.11协议 WLAN的勘测与规划 WLAN的安装与部署 蓝牙技术与组网 无线MESH技术 MANET路由协议 思维导图,提供下载:可在下载资源自行下载 ...

    无线网络原理

    • 无线网络传输技术
    • WLAN的MAC层关键技术
    • WLAN的组建
    • IEEE802.11协议
    • WLAN的勘测与规划
    • WLAN的安装与部署
    • 蓝牙技术与组网
    • 无线MESH技术
    • MANET路由协议
      在这里插入图片描述
      思维导图,提供下载:可在下载资源自行下载

    无线网络传输技术

    天线
    按照方向性分类:全向天线和定向天线
    区别:发送的能量相同,聚集电波的方式不同
    主要指标:增益、方向图和极化
    天线分集技术、波束赋形技术

    扩频传输技术
    用比信号带宽宽的多的频带宽带来传输信息的技术

    一般扩频通信系统进行三次调制和相应的解调:信息调制、扩频调制和射频调制

    在这里插入图片描述
    DSSS直接序列扩频技术
    用高码率的扩频序列在发端直接去扩展信号的频谱,在收端直接使用相同的扩频码序列对扩展的信号频谱进行调制,还原出原始的信息。

    优点:抗干扰能力强,抗截获能力强,可同频工作,通信速率高

    缺点:频道数减少,带宽增大,信息量增大

    FHSS跳频扩频技术
    用一定的扩频码序列进行选择的多频率频移键控调制,使载波频率不断跳变

    编码方式:两相高斯频移键控(2GPSK)、四相高斯频移键控(4GPSK)

    FHSS对比DSSS

    1. DSSS是一个宽带频率技术
    2. FHSS是一个基于时间的窄宽带频率跳跃技术,用的能量高一些
      应用在蓝牙802.11b上是跳频扩频技术
      在这里插入图片描述
      在这里插入图片描述
      OFDM正交频复用
      将信道分成若干个正交子信道,然后将高速数据信号转成并行的低速的子数据流,并调制到每个子信道上进行传输,在接收端采用相关技术,分开正交信号,可以减少子信道之间的相互干扰

    MIMO多入多输出
    利用多发射、多接收天线进行空间和时间分集,利用多天线来抑制信道衰落

    信道估计:导频或训练序列、盲方法辨别信道

    时空信号处理:从时间和空间同时进行信号处理,分为时空编码和空间复用

    时空编码:分层时空编码、空时格形码、空时分组码和空时频编码

    空间复用:通过天线尽可能在空间信道上传输独立的数据

    同步:帧同步、载波同步、符号同步

    分集:为了克服多路径衰退

    MIMO利用时间、频率和空间三种分集技术,有效增加了对噪声、干扰和多级的容忍

    MIMO-OFDM相结合的技术,支持更多子载波,可实现20MHz,下单个流达到65Mbps
    在这里插入图片描述

    WLAN的MAC关键技术

    共享信道方式
    把单信道分配给多个竞争信道的用户使用

    静态分配方法、动态分配方法

    MAC子层的功能
    提供可靠的数据传输、实现共享介质访问的公平控制

    分布式协调功能(DCF):用于竞争服务CSMA/CA

    点协调功能(PCF):用于无竞争服务

    CSMA/CD
    带有冲突避免的载波监听多路访问,可以检测冲突,但是不能避免
    在这里插入图片描述
    CSMA/CA
    带有冲突避免的载波侦听多路访问,发送包的同时不能检测到信道上有无冲突,只能经量避免
    在这里插入图片描述
    RTS(Rquest to send)
    请求发送
    CTS(Clear to send)
    清除发送

    在这里插入图片描述

    使用RTS/CTS解决隐藏节点问题
    隐藏节点:A和C同时将数据发送给B,使得数据在B处产生冲突,最终导致发送的数据不可用。

    在这里插入图片描述
    解决办法:采用RTS/CTS机制;

    • 当发送方发出数据前,先发送出一个RTS包,告知在传输范围内的所有结点不要有任何传输操作
    • 如果接收方空闲,则响应一个CTS包,告诉发送方可以发送数据,此CTS也会提示接收方信号传输范围内的其它节点不要有任何传输操作

    使用RTS/CTS解决暴露节点问题
    当一个节点要发送数据给另一节点时,因邻近节点也正在发送数据,影响了原来节点的数据传送。
    在这里插入图片描述
    解决办法:采用RTS/CTS机制;

    • 当一个节点侦听到邻近节点发出来的RTS,但却没有听到相应的CTS,可以判定它本身是一个暴露节点,所以允许发送数据到邻近节点

    WLAN的组建

    WLAN的组成
    WLAN是由站STA、无线介质WM、基站BS或无线接入点AP和分布式系统DS四大部分组成

    在这里插入图片描述

    IEEE802.11协议

    802.11加密机制-WEP
    802.11安全机制的IEEE标准过程中,加密专家只对WEP算法进行了很少的组内评审,导致WEP遗留了多处漏洞

    • 较小的IV空间(IV冲突)
    • IP通信中的大量已知报文明文
    • IV本身的弱点
    • 没有密钥交换/管理机制
    • 非常弱的数据完整性检查(CRC32)
    • 缺乏重播保护
    • 有缺乏的身份验证系统

    WEP加密流程

    1. 使用CRS32计算明文的完整性校验值ICV
    2. 生存一个IV,并进行密钥的预先选择
    3. 组合IV和密钥,并使用IRC4生存密钥流
      在这里插入图片描述

    WLAN勘测与规划

    WLAN的需求分析
    拓扑结构的选择,数据传输速率,接入点安装位置和供电,天线的选择,有线LAN相连接,站点调查,频段与信号的选择,产品的选型和选择

    无线网络勘测的准备和内容
    确定覆盖区域,并明确覆盖要求
    熟悉覆盖区域的平面图
    了解组网情况

    WLAN的室内覆盖规划原则

    • WLAN室内规划一般只考虑在同一楼层区域内通过WLAN方式接入该区域的数据用户
    • 楼内不同楼层应该分别考虑进行覆盖计划
    • 在规划WLAN网络时,应该首先考虑的是AP与无线终端之间无线信号的有效交互,齐次是接入用户的有效带宽

    半径小、并发用户多区域的覆盖规划

    • 使用多个AP进行覆盖,此类区域一般有开放式办公区域、大型阶梯教室、大型会议中心
    • 确定覆盖范围外,还要保证各用户的有效带宽,故需部署多个AP
    • 在部署AP时,应考虑信道划分
      在这里插入图片描述

    WLAN安装部署

    WLAN安装部署
    漫游主要针对无线移动客户端,实际上就是整个园区无线局域网的部署过程,整个部署过程中部分AP时需要采用有线连接到三层交换机或者中心路由器,边缘AP可以采用无线桥接等其它方式来连接

    注意事项

    1. 设置每个AP管理IP地址为不同的值,避免IP地址冲突。注意设置在同一网段内
    2. 如果AP运行在AP配置模式下,需要设置相同的SSID,加密方式和验证方式,设置相同的验证密码。
    3. 相邻的区域的AP设置为不同的频段,且相距5各频段以上,避免相互间干扰,如1,6,11
    4. 调整AP摆放位置与调节AP发射功率,使相邻AP覆盖范围适当重叠,减少信号盲区
    5. 局域网只开启一个DHCP服务器
    6. 无线AP最好采用同品牌同型号同版本的产品,方便实现网络的构建

    无线部署-室内覆盖
    在这里插入图片描述

    • AP部署在楼道位置,通过功分器将天线引入宿舍内,注意信道划分
    • 适用同一楼层寝室数量较多、各寝室间墙体对信号衰减较小的情况

    在这里插入图片描述

    • AP部署在楼道位置,通过功分器将天线引入宿舍内,注意信道划分
    • 适用同一楼层寝室数量较多、各寝室墙体对信号衰减较大的情况
      在这里插入图片描述
    • AP部署在宿舍内,注意信道划分,适用同一楼层寝室数量较多、用户数量较多的情况

    蓝牙技术及组网

    蓝牙的网络拓扑结构
    微微网(Piconet)
    类似于802.11b Ad hoc模式。所有蓝牙设备都是对等,以同样的方式工作。

    • 有一台为主设备,其它为从设备
    • 可以连接7台活跃的设备
    • 可以连接200多台不活跃的设备
    • 最大1Mbps
    • 所有用户均在同一跳频序列同步

    在这里插入图片描述
    创建微微网
    在这里插入图片描述

    • 主设备(Master Unit)

    • 某台设备的时钟和跳频序列用于同步其它设备

    • 只能是一个微微网的主设备,可以是其它微微网的从设备

    • 可实施呼叫和连接建立的过程

    • 从设备(Slave Unit)

    • 除主设备外的设备,为从设备

    • 一个微微网的从设备可以是另一个微微网的主设备

    • 连接建立被分配一个临时的3比特成员地址

    • 主设备和从设备的角色可以互换,互换后是另一个新的微微网

    散射网络==微微互联网

    • 相邻或相近的不同的微微网采用不同的跳频序列以避免互相干扰

    分布式网络(Scatternet)
    由多个独立的微微网组成

    • 各微微网由不同的跳频序列来区分

    在这里插入图片描述
    模式

    • 呼吸模式(Sniff)

    • 该模式下从单元收发信息的周期变长,主单元只在指定的时隙才能发送信息

    • 保持模式(Hold)

    • 该模式下从单元只有内部时钟在运行,但一旦切换出该模式,从单元能立即开始收发信息。处于该模式时,从单元可以参加别的微微网,所以可以连接几个微微网

    • 停靠模式(Park)模式

    • 当从单元不参与通信,但仍想保持和跳频信道的同步时,就进入该模式

    蓝牙路由机制
    在这里插入图片描述
    蓝牙路由机制是由移动交换中心MSC、固定蓝牙主设备FM、移动终端MT三个功能模块组成

    FM:位置固定,为MSC和其它蓝牙设备如MT提供接口

    MT:是FM的从设备,FM是MSC的从设备,联网过程中需要注意主从切换

    FM到MSC间链路使用修改的基带连接,不使用跳频技术

    路由表
    MSC路由表包含所有FM和MT的地址
    路由表分为两层
    路由表更新

    • MT进入/离开一个FM微网
    • FM被激活/不活动
      一个MT可以有多个入口,但是在一个微微网中只有一个入口

    无线MESH技术

    无线Mesh网状拓扑

    没有父子关系,只要在无线发射功率可及范围之内的节点都可以直接通讯,一个节点故障只会影响到与它相关的无线链路,其它链路可以正常通讯
    在这里插入图片描述
    在这里插入图片描述
    AC无线控制器
    管理控制所有的无线接入点
    MPP网关节点
    网关作用;路由作用
    MP路由节点
    路由作用
    MAP无线接入点和工作站
    接入无线网络

    MANET网络路由协议

    DSDV路由协议(目的序列距离矢量协议)
    基于Rellman Ford算法

    • 路由表项
      目的地址、距离、下一跳、目标节点序列号
    • 使用两类更新报文
      完全转存(通知全部信息)
      递增更新(仅通知更新信息)
    • 路由表选择依据
      序列号或度量值

    序号的更新来解决环回现象
    序列号相同时,则会采取DV算法来判断是否更新路由

    DSDV路由协议优点

    • 序列号,区分路由的新旧,消除路由环路,提高算法效率,能够快速反应拓扑变化
    • 当路由表发生变化,法广播路由通告
    • 为避免路由振荡,延迟了对不稳定路由节点的广播通告

    缺点:不能适应快速变化的网络,资源开销可能会被浪费,多数路由信息可能从来未使用,源和目标之间只提供一条不支持单向连接的路由

    在这里插入图片描述
    (a)中节点A和节点B起始路由表
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    更新后的(b)节点A、节点B和节点C的路由表
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    AODV路由协议(DSR+DSDV)

    • 被动路由协议: AODV(Ad Hoc On-demand Distance Vector),自组织按需距离向量协议
    • 路由过程: 路由请求、路由响应和路由维护三个过程 依赖路由请求、路由响应、路由错误、Hello共四类报文
    • 各节点维护路由表,分别对不同报文进行处理,维护路由信息的正确有效

    AODV路由请求过程

    • 首先查看自身路由表,查找去往目标的路由表条目
    • 其它节点收到路由请求后,先判断自身是否目标节点

    AODV路由响应与维护

    • 路由响应
      节点收到路由请求后,发现自身为目标节点或自身路由表中有去往目标的有效路由,则产生路由响应,并沿反向路径返回给请求节点
    • 路由维护
    • 路由中断时,节点先启动本地路由修复,若无效,则向相关邻节点发送路由错误,告知路由中断
    • 此外,路由缓存计时器会周期性把超时路由条目从路由表中删除,邻近节点计时器也会周期性广播HELLO报文检测临近节点的连通性,及时清除中断路由

    协议特点:

    • 基于传统距离向量路由机制,算法简单清晰
    • 使用目标序列号防止循环发生,解决了无穷计数问题,易于编程实现
    • 支持中间主机回答,能使源主机快速获得路由,但可能会有过时路由
    • 周期性广播报文,需要消耗一定的能量和网络带宽

    A向G发送一个报文过程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    DSR动态源路由协议

    • 节点维护一个路由快速缓冲区

    • 节点发送分组,先查询本地缓冲区确定是否存在可用路由

    • 中间节点收到请求后,查询本地缓冲区

    • 协议特点

    • 仅在需要通信的节点间维护路由,减少路由维护代价

    • 路由缓冲可以进一步减少了路由发现的开销

    • 路由缓冲使得在一次路由发现过程中,产生多个到达目标的路径

    • 支持非对称传输信道模式

    展开全文
  • 神经网络原理

    千次阅读 2018-09-17 10:57:39
    神经网络原理 神经网络的主要用途在于分类,那么整个神经网络分类的原理是怎么样的?我们还是围绕着损失、优化这两块去说。神经网络输出结果如何分类? 神经网络解决多分类问题最常用的方法是设置n个输出节点,...

     神经网络原理

    神经网络的主要用途在于分类,那么整个神经网络分类的原理是怎么样的?我们还是围绕着损失、优化这两块去说。神经网络输出结果如何分类?

    神经网络解决多分类问题最常用的方法是设置n个输出节点,其中n为类别的个数。

    任意事件发生的概率都在0和1之间,且总有某一个事件发生(概率的和为1)。如果将分类问题中“一个样例属于某一个类别”看成一个概率事件,那么训练数据的正确答案就符合一个概率分布。如何将神经网络前向传播得到的结果也变成概率分布呢?Softmax回归就是一个非常常用的方法。

    一、softmax回归

    Softmax回归将神经网络输出转换成概率结果

    • softmax特点

    如何理解这个公式的作用呢?看一下计算案例

    假设输出结果为:2.3, 4.1, 5.6
    softmax的计算输出结果为:
    y1_p = e^2.3/(e^2.3+e^4.1+e^5.6)
    y1_p = e^4.1/(e^2.3+e^4.1+e^5.6)
    y1_p = e^5.6/(e^2.3+e^4.1+e^5.6)
    

    这样就把神经网络的输出也变成了一个概率输出

    类似于逻辑回归当中的sigmoid函数,sigmoid输出的是某个类别的概率

    想一想线性回归的损失函数以及逻辑回归的损失函数,那么如何去衡量神经网络预测的概率分布和真实答案的概率分布之间的距离?

    二、交叉熵损失

    1.公式

    为了能够衡量距离,目标值需要进行one-hot编码,能与概率值一一对应,如下图

    它的损失如何计算?

    0log(0.10)+0log(0.05)+0log(0.15)+0log(0.10)+0log(0.05)+0log(0.20)+1log(0.10)+0log(0.05)+0log(0.10)+0log(0.10)
    

    上述的结果为1log(0.10),那么为了减少这一个样本的损失。神经网络应该怎么做?所以会提高对应目标值为1的位置输出概率大小,由于softmax公式影响,其它的概率必定会减少。只要进行这样的调整就可以预测成功了!!!!!

    • 提高对应目标值为1的位置输出概率大小

    2.损失大小

    神经网络最后的损失为平均每个样本的损失大小。

    • 对所有样本的损失求和取其平均值

    三、网络原理总结

    训练过程中计算机会尝试一点点增大或减小每个参数,看其能如何减少相比于训练数据集的误差,以望能找到最优的权重、偏置参数组合

     

    四、softmax、交叉熵损失API

    • tf.nn.softmax_cross_entropy_with_logits(labels=None, logits=None,name=None)
      • 计算logits和labels之间的交叉损失熵
      • labels:标签值(真实值)
      • logits:样本加权之后的值
      • return:返回损失值列表
    • tf.reduce_mean(input_tensor)
      • 计算张量的尺寸的元素平均值
    展开全文
  • 计算机网络原理课程及其作用 作者前言 由于网络的迅速发展,网络安全问题变成了大众重视的一部分,网络安全门槛较高这就导致现在渗透测试行业人员缺口较大、需求较高。如果想入门这一行业不具备基本的技术水平是...
  • 文本是我参加计算机科学与技术专业自学考试中计算机网络原理课程的学习笔记。
  • 1.网络层向上提供的服务有哪两种?是比较其优缺点。 答:网络层向运输层提供 “面向连接”虚电路(Virtual Circuit)服务或“无连接”数据报服务前者预约了双方通信所需的一切网络资源。 优点是能提供服务质量的承诺...
  • 计算机网络原理(04741)课后习题答案

    千次阅读 多人点赞 2021-12-07 22:19:28
    (大纲考点)P31 电路交换的基本原理:在电路交换网络中,首先需要通过中间交换结点为两台主机之间建立一条专用的通信线路,称为电路,然后再利用该电路进行通信,通信结束后再拆除电路。 电路交换的优点:实时性高,...
  • CNN卷积神经网络原理详解(上)

    万次阅读 多人点赞 2019-10-18 23:59:17
    CNN卷积神经网络原理详解(上)前言卷积神经网络的生物背景我们要让计算机做什么?卷积网络第一层全连接层训练 前言 卷积网络(convolutional network),也叫作卷积神经网络(convolutional neural network,CNN),是...
  • Kubernetes网络原理

    万次阅读 2017-09-10 14:33:59
    1. kubernetes网络模型1.1. 基础原则 每个Pod都拥有一个独立的IP地址,而且假定所有Pod都在一个可以直接连通的、扁平的网络空间中,不管是否运行在同一Node上都可以通过Pod的IP来访问。 k8s中Pod的IP是最小粒度IP。...
  • VGG网络原理深度解析

    千次阅读 2020-03-24 14:27:26
    1.原理解析 2.网络结构 3.网络训练 dropput 训练技巧 4.VGG代码实现 论文名:Very deep convolutional networks for large-scale image recognition 下载地址:https://arxiv.org/pdf/1409.1556.pdf 正文 ...
  • 计算机网络原理笔记精整理(汇总)

    万次阅读 多人点赞 2020-04-26 08:52:33
    计算机网络原理笔记(汇总)[第一章 概述](https://blog.csdn.net/LeeQiang8023/article/details/105746040)[第二章 物理层](https://blog.csdn.net/LeeQiang8023/article/details/105746377)第三章 数据链路层 ...
  • CNN卷积神经网络原理详解(中)

    万次阅读 多人点赞 2019-10-19 12:43:44
    CNN卷积神经网络原理详解(中)卷积神经网络与全连接神经网络的比较卷积运算的数学解释卷积计算的工作模式 卷积神经网络与全连接神经网络的比较 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈...
  • 神经网络原理及应用(看完就理解了)

    千次阅读 多人点赞 2020-12-23 21:45:58
    神经网络的定义神经网络,是机器学习的一个分支,学名应该叫人工神经网络,与之相对应的是生物神经网络(Biological Neural Networks, BNN),我们将模拟生物神经网络的数学模型统称为人工神经网络模型,简称人工神经...
  • 深度学习:GAN 对抗网络原理详细解析(零基础必看)什么是GAN网络GAN的意义及应用场景GAN的基本网络结构如何优化网络(定义损失)GAN网络的局限性一个小栗子 什么是GAN网络 GAN的全称是Generative adversarial ...
  • 5G无线网络原理概述

    千次阅读 2019-11-30 22:03:55
    5G无线网络原理概述 ​ 2019-10-28 晴 1. 5G总体介绍 (1...
  • 《深度学习》之 循环神经网络 原理 超详解

    万次阅读 多人点赞 2020-03-20 13:28:26
    循环神经网络 一.研究背景 1933年,西班牙神经生物学家Rafael Lorente de Nó发现大脑皮层(cerebral cortex)的解剖结构允许刺激在神经回路中循环传递,并由此提出反响回路假设(reverberating circuit hypothesis...
  • 1.试说明运输层在协议栈中的地位和作用,运输层的通信和网络层的通信有什么重要区别?为什么运输层是必不可少的? 答:运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务 运输...
  • 卷积神经网络原理简介

    千次阅读 2019-06-13 11:02:34
    卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。 卷积神经网络具有表征学习...
  • 计算机网络原理(第一章)课后题答案

    万次阅读 多人点赞 2020-09-13 14:45:54
    1.什么是计算机网络? 计算机网络是互联、自治的计算机集合 自治:计算机系统彼此独立,不存在主从或控制与被控制的关系 互联:利用通信线路链接,连接相互独立的计算机系统 2.网络协议的三要素是什么?每个要素...
  • 卷积神经网络原理与实现过程

    千次阅读 2019-10-29 10:27:52
    卷积神经网络在回归问题中原理与实现过程 卷积原理 正向传播 反向传播 卷积原理 卷积神经网络往往被用于图像领域处理,它具有两大优势,分别是共享权重和局部连接,在数据量较大时,能够有效的降低网络压力。卷积...
  • 第三章 1.数据链路(即逻辑链路)与链路(即物理链路)有何区别? “电路接通了”与”数据链路接通了”的区别何在? 答:数据链路与链路的区别在于数据链路出链路外,还必须有一些必要的规程来控制数据的传输,因此,数据...
  • 残差网络resnet网络原理详解

    千次阅读 2018-07-10 16:56:12
    resnet在2015名声大噪,而且影响了2016年DL在学术界和工业界的发展方向。下面是这个resnet的网络结构,...我们知道,在计算机视觉里,特征的“等级”随增网络深度的加深而变高,研究表明,网络的深度是实现好的效果...
  • 计算机网络原理复习(一)

    万次阅读 2018-03-18 12:32:31
    周末花时间把网络原理的知识点整理了一下。计算机网络体系结构:网络体系结构:按照我的理解1.每一层有对应的作用;2.每一层有对应的规程和协议,用来解决对应的问题;3.向下一层对向上一层的作用是透明的;下面展开...
  • Flannel网络原理(转载)

    千次阅读 2019-04-17 13:43:22
    overlay网络简介 覆盖网络就是应用层网络,它是面向应用层的,不考虑或很少考虑网络层,物理层的问题。 详细说来,覆盖网络是指建立在另一个网络上的网络。该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的...
  • 一个动画看懂网络原理之CSMA/CD的工作原理

    万次阅读 多人点赞 2018-10-09 01:48:28
    一个动画看懂网络原理之CSMA/CD的工作原理 CSMA/CD协议是以太网传输中的一个重要协议,由于线路中同一时间只能允许一台电脑发送信息,否则各计算机之间就会产生干扰,为了解决这个问题,采用了CSMA/CD协议来协调。 ...
  • calico网络原理分析

    万次阅读 2019-01-05 20:12:55
    最近在公司搭建k8s生产环境的时候,采用了calico作为网络插件。于是写篇博客记录一下。 一、Calico基本介绍 Calico是一个纯三层的协议,为OpenStack虚机和Docker容器提供多主机间通信。Calico不使用重叠网络比如...
  • 计算机网络原理简介

    万次阅读 多人点赞 2018-03-07 10:10:19
    把电脑连接起来的物理手段,主要规定了网络的一些电气特性,作用是负责传送0和1的电信号.而机械特性,及时如何去与硬件相连了,比如说插座的尺寸 数据链路层 物理层传过来了0和1,但是单纯的0和1没有啥意义,所以就要...
  • 残差网络原理

    万次阅读 多人点赞 2017-12-17 22:48:03
    解:一般认为神经网络的每一层分别对应于提取不同层次的特征信息,有低层,中层和高层,而网络越深的时候,提取到的不同层次的信息会越多,而不同层次间的层次信息的组合也会越多。 (2)为什么在残差之前网络的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,011,934
精华内容 404,773
关键字:

网络原理