6-1 从全连接层到卷积
我们之前讨论的多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。 对于表格数据,我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。 此时,多层感知机可能是最好的选择,然而对于高维感知数据,这种缺少结构的网络可能会变得不实用。
例如,在之前猫狗分类的例子中:假设我们有一个足够充分的照片数据集,数据集中是拥有标注的照片,每张照片具有百万级像素,这意味着网络的每次输入都有一百万个维度。 即使将隐藏层维度降低到1000,这个全连接层也将有 1 0 6 × 1 0 3 = 1 0 9 10^{6}\times 10^{3}=10^{9} 106×103=109个参数。 想要训练这个模型将不可实现,因为需要有大量的GPU、分布式优化训练的经验和超乎常人的耐心。
(在这个例子中,假设我们有一个标记好的图像数据集,其中每张图像具有百万级别的像素。这意味着每次输入到网络中的数据维度是一百万维,即每张图像由一百万个像素值组成。
文中提到的“每次输入都有一百万个维度”指的是每张图片被视为一个具有一百万个数值的向量,每个数值代表一个像素点的信息。在深度学习中,每一个输入维度通常对应于一个神经网络的输入节点。
接着,文中提到假设将隐藏层的维度降低到1000,这里的“隐藏层维度”指的是这一层中包含的神经元(或节点)数量。简单来说,这就是这层可以学习到的不同特征的数量。
最后,“这个全连接层也将有 1 0 6 × 1 0 3 = 1 0 9 10^{6}\times 10^{3}=10^{9} 106×103=109个参数”这句话描述的是在一个全连接的神经网络层中,输入层和隐藏层之间的参数数量。全连接层意味着每个输入节点都与下一层的每个节点相连。这里的参数通常是指权重,每个连接都有一个权重。所以,如果输入层有一百万个节点,隐藏层有1000个节点,那么总的连接数(即权重数)就是一百万乘以一千,即一千亿个权重。
这一千亿个权重(参数)的数量非常庞大,这也说明了为什么在实际应用中,处理这样大规模的数据和网络结构需要极大的计算资源和优化方法。)
有些读者可能会反对这个观点,认为要求百万像素的分辨率可能不是必要的。 然而,即使分辨率减小为十万像素,使用1000个隐藏单元的隐藏层也可能不足以学习到良好的图像特征,在真实的系统中我们仍然需要数十亿个参数。 此外,拟合如此多的参数还需要收集大量的数据。 然而,如今人类和机器都能很好地区分猫和狗:这是因为图像中本就拥有丰富的结构,而这些结构可以被人类和机器学习模型使用。 卷积神经网络(convolutional neural networks,CNN)是机器学习利用自然图像中一些已知结构的创造性方法。
不变性
想象一下,假设我们想从一张图片中找到某个物体。 合理的假设是:无论哪种方法找到这个物体,都应该和物体的位置无关。 理想情况下,我们的系统应该能够利用常识:猪通常不在天上飞,飞机通常不在水里游泳。 但是,如果一只猪出现在图片顶部,我们还是应该认出它。 我们可以从儿童游戏”沃尔多在哪里”( 图6.1.1)中得到灵感: 在这个游戏中包含了许多充斥着活动的混乱场景,而沃尔多通常潜伏在一些不太可能的位置,读者的目标就是找出他。 尽管沃尔多的装扮很有特点,但是在眼花缭乱的场景中找到他也如大海捞针。 然而沃尔多的样子并不取决于他潜藏的地方,因此我们可以使用一个“沃尔多检测器”扫描图像。 该检测器将图像分割成多个区域,并为每个区域包含沃尔多的可能性打分。 卷积神经网络正是将空间不变性(spatial invariance)的这一概念系统化,从而基于这个模型使用较少的参数来学习有用的表示。
现在,我们将上述想法总结一下,从而帮助我们设计适合于计算机视觉的神经网络架构。
- 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。
平移不变性意味着当一个物体在图像中移动时,无论它出现在图像的哪个位置,神经网络对该物体的识别应保持不变。这是通过神经网络的设计实现的,特别是在卷积神经网络中,通过使用卷积层来实现。卷积层通过在整个图像上滑动同一卷积核(或滤波器),提取图像的特征。由于同一卷积核被用于图像的每个部分,因此无论物体在图像中的哪个位置,相同的特征都会被相同方式处理,从而实现平移不变性。这是处理图像时非常重要的属性,因为它允许模型以更泛化的方式识别物体,不受其在图像中位置的影响。
- 局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。
局部性原则指的是神经网络在处理图像时应该首先关注图像的小部分或局部区域,而不是立即尝试理解图像中远距离区域间的关系。这也是通过卷积层实现的,其中卷积核只覆盖图像的一小块区域。这样,网络可以先识别小范围内的简单特征(如边缘和角点),然后逐层组合这些局部特征,逐渐构建出更复杂的表示,最终能够识别整个图像中的复杂对象。通过这种方式,网络可以有效地捕捉到重要的局部模式,而不会被图像中不相关的信息干扰。
多层感知机的限制
(下面这节描述的是如何将一个多层感知机(MLP)用于处理具有空间结构的二维图像数据,而非仅处理一维的数值数据
下面我将逐步解释这个过程:
- 二维图像作为输入 输入数据 X X X是一个二维图像,这意味着它具有空间维度(例如,宽度和高度)。在这里, X X X可以表示为一个矩阵,或在编程中用二维张量来处理。
- 隐藏表示 隐藏表示 H H H也是一个矩阵或二维张量,并且具有与输入图像 X X X相同的形状。这表示 H H H在每个位置 ( i , j ) (i,j) (i,j)都有一个与输入图像中对应位置相关的隐藏值。
- 空间结构的重要性 文章提到输入和隐藏表示都“拥有空间结构”。这意味着图像的每个像素位置不仅仅是独立的数据点,而是与其周围的像素在空间上是相关的。这种空间关系在处理图像时非常重要,因为图像中物体和特征的识别依赖于像素间的这种空间关系。
- 权重的变化 在传统的多层感知机中,每个输入节点与每个输出节点之间通常通过一个权重矩阵连接。这种结构适合处理一维数据,但对于保持图像的空间结构则不够有效。因此,文中提到需要使用一个四阶权重张量 W W W替换传统的权重矩阵。
- 四阶权重张量 四阶权重张量 W W W可以理解为一个高维数组,其中包含了更多的维度来适应图像处理的需要。在图像处理中,每个“隐藏神经元”(即 H H H中的每个元素)需要接收到来自 X X X中每个像素的信息。为了实现这一点,权重张量 W W W不仅记录了从输入到输出的连接强度,而且还能够处理输入数据的空间关系。这使得模型可以更有效地捕捉图像中的空间和视觉模式。
总的来说,这段话描述的是如何通过扩展多层感知机的结构,使用更复杂的权重形式来适应对具有空间结构的数据(如图像)的处理,使每个输出节点能够有效地接收并处理来自每个输入节点的信息,同时保持输入数据的空间特性。)
首先,多层感知机的输入是二维图像 X X X,其隐藏表示 H H H在数学上是一个矩阵,在代码中表示为二维张量。 其中 X X X和 H H H具有相同的形状。 为了方便理解,我们可以认为,无论是输入还是隐藏表示都拥有空间结构。
使用 [ X ] i , j [X]_{i,j} [X]i,j和 [ H ] i , j [H]_{i,j} [H]i,j分别表示输入图像和隐藏表示中位置 ( i , j ) (i,j) (i,j)处的像素。 为了使每个隐藏神经元都能接收到每个输入像素的信息,我们将参数从权重矩阵(如同我们先前在多层感知机中所做的那样)替换为四阶权重张量 W W W( W W W是全连接层的权重)。假设 U U U包含偏置参数,我们可以将全连接层形式化地表示为:
(以前是变成一维向量,现在是二维,所以现在是遍历 k k k和 l l l这两个维度来求和。)
其中,从 W W W到 V V V的转换只是形式上的转换,因为在这两个四阶张量的元素之间存在一一对应的关系。我们只需重新索引下标 ( k , l ) (k,l) (k,l),使 k = i + a k=i+a k=i+a、 l = j + b l=j+b l=j+b,由此可得 [ V ] i , j , a , b = [ W ] i , j , i + a , j + b [V]_{i,j,a,b}=[W]_{i,j,i+a,j+b} [V]i,j,a,b=[W]i,j,i+a,j+b。索引 a a a和 b b b通过在正偏移和负偏移之间移动覆盖了整个图像。对于隐藏表示中任意给定位置 ( i , j ) (i,j) (i,j)处的像素值 [ H ] i , j [H]_{i,j} [H]i,j,可以通过在 x x x中以 ( i , j ) (i,j) (i,j)为中心对像素进行加权求和得到,加权使用的权重为 [ V ] i , j , a , b [V]_{i,j,a,b} [V]i,j,a,b。
上面描述的是如何使用一个二维卷积核来在多层感知机中处理图像数据,这里的重点是用来计算隐藏层 H H H的公式。
公式的解释如下:
- [ H ] i , j [H]_{i,j} [H]i,j 表示隐藏层在位置 ( i , j ) (i,j) (i,j)的值。
- [ U ] i , j [U]_{i,j} [U]i,j 是一个偏置项,为每个位置 ( i , j ) (i,j) (i,j)提供一个基础值。
- W i , j , k , l W_{i,j,k,l} Wi,j,k,l 是一个四阶权重张量,表示输入像素 ( k , l ) (k,l) (k,l)对于隐藏层位置 ( i , j ) (i,j) (i,j)的影响权重。
- [ X ] k , l [X]_{k,l} [X]k,l 是输入图像在位置 ( k , l ) (k,l) (k,l)的像素值。
隐藏层的每个位置 ( i , j ) (i,j) (i,j)的值是通过一个加权和计算的,加权和中包括了所有输入像素的影响,具体公式为:
这里的求和操作遍历所有的输入像素, [ W ] i , j , k , l × [ X ] k , l [W]_{i,j,k,l} \times [X]_{k,l} [W]i,j,k,l×[X]k,l
表示输入像素 ( k , l ) (k,l) (k,l)对隐藏层位置 ( i , j ) (i,j) (i,j)的贡献。上面还提到了一种简化形式的权重表示,用 V i , j , a , b V_{i,j,a,b} Vi,j,a,b替换 W i , j , k , l W_{i,j,k,l} Wi,j,k,l,并且假设:
这里的 a a a和 b b b表示相对于中心位置 ( i , j ) (i,j) (i,j)的偏移量。因此,简化后的卷积公式变为:
这实际上是一个典型的卷积操作,其中 V i , j , a , b V_{i,j,a,b} Vi,j,a,b是卷积核,而 [ X ] i + a , j + b [X]_{i+a,j+b} [X]i+a,j+b是输入图像在卷积核覆盖的区域内的像素。这种表示方式在实际的图像处理和神经网络中被广泛使用,因为它可以有效地利用图像的局部空间关系,同时减少模型中的参数数量。
平移不变性
不管探测的 ( i , j ) (i,j) (i,j)移动到哪里, [ V ] a , b [V]_{a,b} [V]a,b是不变的。
这段内容进一步阐释了之前提到的卷积操作,特别是引入了平移不变性的概念,并且讨论了权重共享对于减少模型复杂度的重要性。
平移不变性 平移不变性意味着当输入图像中的特征在空间上发生平移时,网络的响应方式应该是一致的。也就是说,无论一个特征出现在输入图像的哪个位置,卷积网络都应该能够以相同的方式识别它。这种属性在处理图像和其他形式的空间数据时非常重要,因为它允许模型在不同位置检测到相同的特征。
权重共享 在卷积神经网络中,同一个卷积核(包含权重 V a , b V_{a,b} Va,b)在整个输入图像上滑动,用于提取特征。这意味着相同的权重被用来处理输入数据的不同部分,这样做极大地减少了模型的参数数量,因为不需要为每个像素或区域学习一个独立的权重集。权重共享也有助于提高模型的训练效率和泛化能力。
其实这里也可以叫做二维的交叉相关。即输出的像素是等于输入的对应像素以它为中心作偏移,和模式 [ V ] a , b [V]_{a,b} [V]a,b作内积。
二维卷积就是全连接,或者说是一个矩阵乘法,但是我的权重的一些东西是重复的,不是每一个元素都可以自由变换。我们也知道说,当我们把一个模型的取值范围做了限制的话,我们就把模型的复杂度降低了,也就是说,我不要存那么多元素了。
局部性
a a a和 b b b都只从 − Δ -\Delta −Δ到 Δ \Delta Δ之间变换。
简而言之, (6.1.3)是一个卷积层(convolutional layer),而卷积神经网络是包含卷积层的一类特殊的神经网络。 在深度学习研究社区中, V V V被称为卷积核(convolution kernel)或者滤波器(filter),亦或简单地称之为该卷积层的权重,通常该权重是可学习的参数。 当图像处理的局部区域很小时,卷积神经网络与多层感知机的训练差异可能是巨大的:以前,多层感知机可能需要数十亿个参数来表示网络中的一层,而现在卷积神经网络通常只需要几百个参数,而且不需要改变输入或隐藏表示的维数。 参数大幅减少的代价是,我们的特征现在是平移不变的,并且当确定每个隐藏活性值时,每一层只包含局部的信息。 以上所有的权重学习都将依赖于归纳偏置。当这种偏置与现实相符时,我们就能得到样本有效的模型,并且这些模型能很好地泛化到未知数据中。 但如果这偏置与现实不符时,比如当图像不满足平移不变时,我们的模型可能难以拟合我们的训练数据。
卷积是一个特殊的全连接层。
卷积
“沃尔多在哪里”回顾
回到上面的“沃尔多在哪里”游戏,让我们看看它到底是什么样子。卷积层根据滤波器 V V V选取给定大小的窗口,并加权处理图片,如图6.1.2中所示。我们的目标是学习一个模型,以便探测出在“沃尔多”最可能出现的地方。
通道
在多通道输入与多通道输出的卷积中,每个输入通道都通过一个卷积核(或多个)进行处理,然后所有的结果会被整合到输出通道中。这种结构允许网络学习从不同的特征组合中提取信息。
在这种设置中,每个输出通道的值是通过对所有输入通道进行卷积运算并累加得到的。这意味着,每个输出通道可以看作是从所有输入通道中提取特征的一个“过滤器”。公式中的卷积核尺寸、步长(通常由卷积操作外部定义)和填充方式都会影响输出特征图的维度。这种多通道到多通道的卷积方式在实际应用中极其重要,因为它允许网络捕捉跨通道的复杂模式,这对于图像处理(例如,颜色和纹理信息的整合)、视频处理和其他多维信号处理任务至关重要。
通过这样的结构,卷积神经网络能够构建从简单到复杂的信息层次,逐步抽象输入数据中的高级特征,这对于深度学习模型的成功执行各种任务(如图像识别、语音识别和自然语言处理)是基础。
小结
-
图像的平移不变性使我们以相同的方式处理局部图像,而不在乎它的位置。
-
局部性意味着计算相应的隐藏表示只需一小部分局部图像像素。
-
在图像处理中,卷积层通常比全连接层需要更少的参数,但依旧获得高效用的模型。
-
卷积神经网络(CNN)是一类特殊的神经网络,它可以包含多个卷积层。
-
多个输入和输出通道使模型在每个空间位置可以获取图像的多方面特征。
相关文章:
6-1 从全连接层到卷积
我们之前讨论的多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。 对于表格数据,我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。 此时,多层感知机可能是最好的…...
【Android Studio】项目目录结构
文章目录 常用视图Android视图project视图 gradlebuild.gradleSDK 路径主题入口程序 常用视图 Android视图 project视图 gradle build.gradle SDK 路径 主题 入口程序...
electron-builder打包vue2项目问题合集
一、打包之后不显示elecmentui的图标 1、使用版本 vue ^2.6.14element-ui ^2.15.14vue-cli-plugin-electron-builder 2.1.1 2、解决办法 1) 如果是简单的图标可以使用图片代替(这种对于elementui组件的图标还是不会显示) 2)在v…...
5行代码快速Git配置ssh
0 流程步骤 检查本地主机是否已经存在ssh key生成ssh key获取ssh key公钥内容(id_rsa.pub)复制该内容,到Github账号上添加公钥,进入Settings设置验证是否设置成功 1 代码 # 1.检查本地主机是否已经存在ssh key cd ~/.ssh ls # …...
气相色谱检测常见问题和实战案例分享-测试狗
气相色谱检测常见问题和实战案例分享 气相色谱GC是一种高效、灵敏的分离和分析技术,广泛应用于石油化工、环境保护、食品安全、药物分析等领域;在使用气相色谱进行检测时,可能会遇到一些常见问题,本文将分享一些实战案例ÿ…...
一文学会CUDA编程:深入了解CUDA编程与架构(一)
前言: CUDA(Compute Unified Device Architecture,统一计算设备架构)是由NVIDIA公司开发的一种并行计算平台和编程模型。CUDA于2006年发布,旨在通过图形处理器(GPU)解决复杂的计算问题。在早期…...
Jquery判断图片加载失败,显示默认图片
//加载图片 出现404状态时触发 $(img).error(function () { //将加载不到的图片的src属性时,修改成默认图片,注意:默认图片必须保证存在,否则会一直调用此函数,造成死循环。$(this).attr("src", "Imag…...
App 自动化测试调研
App 自动化测试调研 App 自动化测试的价值 App 自动化测试在软件开发过程中扮演着重要的角色,具有以下几个方面的价值: 1.提高测试效率和覆盖率:自动化测试可以执行大量的测试用例,覆盖各种功能和场景,相比手动测试…...
Java 后端已经过时的技术,也是我逝去的青春
最近这段时间收到了一些读者的私信,问我某个技术要不要学,还有一些的同学竟然对 Java 图形化很感兴趣,还想找这方面的工作。 我接触 Java 已近 10多年了,见证了许多 Java 技术变迁,包括: JavaEE 框架&…...
释放自动化测试潜能:性能优化策略与实战技巧!
引言 在当今追求软件快速迭代的环境下,自动化测试的性能瓶颈正成为制约开发流程加速的主要障碍。本文将深入探讨如何通过策略和实践,优化自动化测试的性能,实现测试执行速度的质的飞跃。 自动化性能瓶颈的识别与突破 首先,识别并…...
如何理解代码的跨平台?
跨平台性: 跨平台性意味着,在多个平台都兼容运行 那么是怎么做到跨平台? 一般来说,window的操作系统和Linux的操作系统肯定是不一样的 那么提供的系统调用接口和诸多细节也是不一样的 但是,我们的c语言和c语言…...
dp:221. 最大正方形
221. 最大正方形 看到这个题目真能立马想到dp吗?貌似很难,即使知道是一个dp题也很难想到解法。 直观来看,使用bfs以一个点为中点进行遍历,需要的时间复杂度为 O ( n 2 m 2 ) O(n^2m^2) O(n2m2) 但是可以很容易发现,…...
花10分钟写个漂亮的后端API接口模板!
你好,我是田哥 在这微服务架构盛行的黄金时段,加上越来越多的前后端分离,导致后端API接口规范变得越来越重要了。 比如:统一返回参数形式、统一返回码、统一异常处理、集成swagger等。 目的主要是规范后端项目代码,以及…...
评估分类机器学习模型的指标
欢迎来到雲闪世界。一旦我们训练了一个监督机器学习模型来解决分类问题,如果这就是我们工作的结束,我们会很高兴,我们可以直接向他们输入新数据。我们希望它能正确地对所有内容进行分类。然而,实际上,模型做出的预测并…...
农机自动化:现代农业的未来趋势
随着人口的增长和农业生产的需求不断增加,提高农业生产效率成为现代农业的重要目标。农机自动化作为一种新兴技术,可以大幅度提升农机的使用效率和生产能力。农机自动化是指利用先进的传感技术、数据处理和人工智能技术,使农机能够自动完成农…...
25考研操作系统复习·1.1/1.2/1.3 操作系统的基本概念/发展历程/运行环境
目录 操作系统的基本概念 概念(定义) 功能和目标 资源的管理者 向上层提供服务 给普通用户的 给软件/程序员的 对硬件机器的拓展 操作系统的特征 操作系统的发展历程 操作系统的运行环境 操作系统的运行机制 中断和异常 中断的作用 中断的…...
如何培养学生的创新意识和实践能力
培养学生的创新意识和实践能力是一个复杂而系统的过程,涉及多个方面的努力和措施。以下是一些具体的做法: 一、培养学生的创新意识 提供创新环境: 为学生创造一个开放、自由、支持创新的学习环境,让他们能够自由地表达自己的想法…...
四、GD32 MCU 常见外设介绍(15)CAN 模块介绍
CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。 CAN总线协议已经成为汽车计算机控…...
AIGC大模型产品经理高频面试大揭秘‼️
近期有十几个学生在面试大模型产品经理(薪资还可以,详情见下图),根据他们面试(包括1-4面)中出现高频大于3次的问题汇总如下,一共32道题目(有答案)。 29.讲讲T5和Bart的区…...
【嵌入式笔记】【C语言】struct union
结构体(Struct)定义: struct 结构体名 {member1; // 成员1,可以是任何基本数据类型或复合类型member2; // 成员2... };//例如: struct Point {float x;float y;...
【初学人工智能原理】【9】深度学习:神奇的DeepLearning
前言 本文教程均来自b站【小白也能听懂的人工智能原理】,感兴趣的可自行到b站观看。 代码及工具箱 本专栏的代码和工具函数已经上传到GitHub:1571859588/xiaobai_AI: 零基础入门人工智能 (github.com),可以找到对应课程的代码 正文 深度…...
[RoarCTF 2019]Easy Calc1
打开题目 查看源码,看到 看到源代码有 calc.php,构造url打开 看到php审计代码, 由于页面中无法上传num,则输入 num,在num前加入一个空格可以让num变得可以上传,而且在进行代码解析时,php会把前…...
安卓APK安装包arm64-v8a、armeabi-v7a、x86、x86_64有何区别?如何选择?
在GitHub网站下载Android 安装包,Actions资源下的APK文件通常有以下版本供选择: 例如上图是某Android客户端的安装包文件,有以下几个版本可以选择: mobile-release.apk(通用版本,体积最大)mobi…...
【AI大模型】通义千问:开启语言模型新篇章与Function Call技术的应用探索
文章目录 前言一、大语言模型1.大模型介绍2.大模型的发展历程3.大模型的分类a.按内容分类b.按应用分类 二、通义千问1.通义千问模型介绍a.通义千问模型介绍b.应用场景c.模型概览 2.对话a.对话的两种方式通义千问API的使用 b.单轮对话Vue页面代码:Django接口代码 c.多…...
详细教程 MySQL 数据库 下载 安装 连接 环境配置 全面
数据库就是储存和管理数据的仓库,对数据进行增删改查操作,其本质是一个软件。 首先数据有两种,一种是关系型数据库,另一种是非关系型数据库。 关系型数据库是以表的形式来存储数据,表和表之间可以有很多复杂的关系&a…...
门控循环单元GRU
目录 一、GRU提出的背景:1.RNN存在的问题:2.GRU的思想: 二、更新门和重置门:三、GRU网络架构:1.更新门和重置门如何发挥作用:1.1候选隐藏状态H~t:1.2隐藏状态Ht: 2.GRU: 四、底层源码…...
程序员修炼之路
成为一名优秀的程序员,需要广泛而深入地学习多个领域的知识。这些课程不仅帮助建立扎实的编程基础,还培养了问题解决、算法设计、系统思维等多方面的能力。以下是一些核心的必修课: 计算机基础 计算机组成原理:理解计算机的硬件组…...
PHP时间相关函数
时间、日期 time()获取当前时间戳(10位)microtime(true)返回一个浮点时间戳data(格式,时间戳)日期格式化 $time time(); echo date(Y-m-d H:i:s, $time);strtotime&am…...
python进阶——python面向对象
前言 Python是一种面向对象的编程语言,可在Python中使用类和对象来组织和封装代码。面向对象编程(OOP)是一种编程范例,它将数据和操作数据的方法封装在一个对象内部,通过对象之间的交互来实现程序的功能。 1、面向对象…...
【无标题】vue2鼠标悬停(hover)时切换图片
在Vue 2中,要实现鼠标悬停(hover)时切换图片的功能,你不能直接在模板的:src绑定中处理这个逻辑,因为Vue的模板不支持条件渲染的复杂逻辑(如基于鼠标状态的动态图片切换)。但是,你可以…...
获取网站后台地址/信阳seo公司
我是黄勇,一名大厂内训专家,曾为网易、360、华为等多家企业员工提供Python培训;曾使用Python开发过多个大型企业网站,从零打造分布式爬虫架构,目前专注于python领域的课程研发和教学工作。如今的职场上,10个…...
做花型设计哪个网站下载素材好/今日十大热点新闻事件
注: 此系列为自己之前所搭建网站内容。 其实python的os模块能够很好的完成此任务。改天总结下。 之前在处理气象数据时,十几个文件,文件名比较长,需要自己处理变动的年份找出地址的规律再进行文件的读取,结果就这一点东…...
仪征市企业网站建设公司/国外seo工具
1、良好的开端是成功的一半。抖音账号前5个作品的质量,决定了这个账号的初始权重。更关键的是,新账号发布的视频作品更容易得到系统的推荐。抖音遵循去中心化原则。每个人都可以成为中心,任何中心都不是永久的。具体来说,推荐的短…...
门户网站建设报告哦/毕节地seo
一见到这个方法,就很容易想起String subString方法。 但是使用这个方法注意了: 当List Father如果使用subList,生成List children。 但是如果我们接下来对List Father再次进行操作,如添加,List children也会跟着添加…...
写作网站不屏蔽/宁波seo快速优化平台
1. 新建 axiosTool.js 文件,设置请求拦截和处理的逻辑 import Vue from vue import axios from axios //取消请求 let CancelToken axios.CancelToken //设置默认请求头,如果不需要可以取消这一步 axios.defaults.headers {X-Requested-With: XMLHttpR…...
山西网站建设费用/今天的新闻摘抄
前言 今天讲解一下Android平台下ListView控件的开发,在本篇博客中,将介绍ListView的一些常用属性、方法及事件,还会讲解ListView在开发中常用的几种方式,以及使用不通用的适配器Adapter定制个性的View视图用于ListView的展示。 Li…...