【机器学习】——深度学习与神经网络

news2024/11/27 14:32:44

目录

引入

一、神经网络及其主要算法

1、前馈神经网络

2、感知器

3、三层前馈网络(多层感知器MLP)

4、反向传播算法

二、深度学习

1、自编码算法AutorEncoder

2、自组织编码深度网络

①栈式AutorEncoder自动编码器

②Sparse Coding稀疏编码

3、卷积神经网络模型(续下次)

拓展:


引入

人工神经网络ANN是由大量处理单位(人工神经元)经广泛互连而组成的人工网络,以模拟脑神经系统的结构与功能。ANN可看作以人工神经元为节点,用有向加权弧连接起来的有向图,有向弧的权重表示相互连接的两个神经元间相互作用的强弱深度学习算法是人工神经网络算法的改进,提高了神经网络算法的性能和应用。


一、神经网络及其主要算法

1、前馈神经网络

构成前馈神经网络的各神经元接收前一级输入,并输入到下一级,无反馈,可用一有向无环图表示。图的节点分为两类——输入节点和计算单元。每个计算单元可有任意个输入但只有一个输出,而输出可耦合到任意多个其他节点输入(输出的是同一个值给很多人)。前馈网络通常分为不同层,通常认为输入为第一层,所以单层计算单元的网络实际上是一个两层网络,输入和输出节点可与外界相连,直接受环境影响,称为可见层,其他中间层称为隐层。

2、感知器

感知器模型是为研究大脑的存储、学习和认知过程而提出的一类具有自学习能力的神经网络模型,把神经网络的研究从纯理论探讨引向了工程实现。它是一种双层神经网络模型一层为输入层,另一层具有计算单元,可以通过监督学习建立模式判别的能力。

学习的目标是通过改变权值使神经网络由给定的输入得到给定的输出。作为分类器,可以用已知类别的模式向量特征向量作为训练集,当输入为属于第j类的特征向量X时,应使对应于该类输出y1=1,而其他神经元的输出则为0(或-1)。

设理想的输出为:$\boldsymbol{Y}=\left(y_1, y_2, \cdots, y_m\right)^{\mathrm{T}}$

实际输出为:$\hat{\boldsymbol{Y}}=\left(\hat{y}_1, \hat{y}_2, \cdots, \hat{y}_m\right)^{\mathrm{T}}$

为了使输出逼近理想输出,可以反复依次输入训练集中的向量X,并计算出实际的输出Y^,对权值w做出如下修改:

$\omega_{i j}(t+1)=\omega_{i j}(t)+\Delta \omega_{i j}(t)$

 其中:

$\Delta \omega_{i j}=\eta\left(y_i-\hat{y}_j\right) x_i$

感知器的学习过程求取线性判别函数的过程是等价的,此处只指出感知器的一些特性:①两层感知器只能用于解决线性可分问题;②学习过程收敛很快,且与初始值无关。

单层感知器不能表达的问题称为线性不可分问题,如“异或”问题(XOR)。线性不可分函数的数量随着输入变量个数的增加而快速增加,甚至远远超过线性可分函数得个数。

3、三层前馈网络(多层感知器MLP)

神经元的非线性特性可实现各种逻辑门,如NAND(与非门)可用如下的阈值神经元实现:

任何逻辑函数都可以由与非门组成,所以:①任何逻辑函数都可以用前馈网络实现;②单个阈值神经元可以实现任意多输入的与门、或门、与非门、或非门;由于任何逻辑函数都可以化为析取(或合取)形式,所以任何逻辑函数都可用一个三层(只用两层计算单元)的前馈网路实现

当神经元的输出函数为Sigmoid函数时,上述结论可推广到连续的非线性函数,在很宽松的条件下,三层前馈网络可以逼近任意的多元非线性函数,突破了两层前馈网络线性可分的限制。这种三层或三层以上的前馈网络叫作多层感知器

4、反向传播算法

三层前馈网络的适用范围大大超过二层前馈网络,但学习算法较为复杂——主要困难是中间隐层不直接与外界连接,无法直接计算其误差。为此提出了反向传播算法(BP)——主要思想从后向前(反向)逐层传播输出层的误差,以间接算出隐层的误差。

BP算法两个阶段:①(正向过程)输入信息从输入层经隐层逐层计算各单元的输出值;②(反向传播过程)内输出误差逐层向前算出隐层各单元的误差,并用此误差修正前层权值。具体来说,对于样本集S={(X1,Y1),(X2,Y2),...,(Xs,Ys)},逐一地根据样本(Xk,Yk)计算出实际输出Ok和误差测度E1,用输出层的误差调整输出层权矩阵,并用此误差估计输出层的直接前导层误差估计更前一层的误差,如此得到每一层的误差估计,实现对每层权矩阵的修改,重复这个过程直到所有层误差测度之和小于规定误差。

BP算法中通常采用梯度法修正权值,为此要求输出函数可微,通常采用Sigmoid函数作为输出函数。下面研究处于某一层的第j个计算单元,脚标i代表前层第i个单元,脚标k代表后层第k个单元,Oj代表本层输出,w_ij是前层到本层的权值,神经网络示意图如下:

BP算法两个参数:步长η和惯性项系数a'。步长η对收敛性影响很大,而且对于不同的问题其最佳值相差也很大,通常可在0.1~3之间试探,对于较为复杂的问题应用较大的值。a影响收敛速度,很多应用中其可在0.9~1之间选择,a>=时不收敛;有些情况下也可不用惯性项(a=0)。

例子:如图是一个简单的前向传播网络,用BP算法确定其中的各连接权值时,σ的计算方法如下:

由图可知:

$\begin{array}{ll}I_3=W_{13} x_1+W_{23} x_2 & O_3=f\left(I_3\right) \\I_4=W_{31} O_3 & O_4=y_1=f\left(I_1\right) \\ I_5=W_{35} O_3 & O_5=y_2=f\left(I_5\right) \\ e=\frac{1}{2}\left[\left(y_1^{\prime}-y_1\right)^2+\left(y_2^{\prime}-y_2\right)^2\right]\end{array}$

反向传输时计算如下:

1、计算$\frac{\partial e}{\partial W}$

$\begin{aligned} & \frac{\partial e}{\partial W_{13}}=\frac{\partial e}{\partial I_3} \cdot \frac{\partial I_3}{\partial W_{13}}=\frac{\partial e}{\partial I_3} x_1=\delta_3 x_1 \\ & \frac{\partial e}{\partial W_{23}}=\frac{\partial e}{\partial I_3} \cdot \frac{\partial I_3}{\partial W_{23}}=\frac{\partial e}{\partial I_3} x_2=\delta_3 x_2 \\ & \frac{\partial e}{\partial W_{34}}=\frac{\partial e}{\partial I_4} \cdot \frac{\partial I_4}{\partial W_{34}}=\frac{\partial e}{\partial I_4} O_3=\delta_4 O_3 \\ & \frac{\partial e}{\partial W_{35}}=\frac{\partial e}{\partial I_5} \cdot \frac{\partial I_5}{\partial W_{35}}=\frac{\partial e}{\partial I_5} O_3=\delta_5 O_3\end{aligned}$

2、计算σ

$\begin{aligned} & \delta_4=\frac{\partial e}{\partial I_4}=\left(y_1-y_1^{\prime}\right) f^{\prime}\left(I_4\right) \\ & \delta_5=\frac{\partial e}{\partial I_5}=\left(y_2-y_2^{\prime}\right) f^{\prime}\left(I_5\right) \\ & \delta_3=\left(\delta_4 W_{34}+\delta_5 W_{35}\right) f^{\prime}\left(I_3\right)\end{aligned}$

也就是σ3的计算要依赖于它相邻的上层节点的σ4和σ5的计算。

三层前馈网络输入层和输出层单元数(宽度)由问题本身决定,例如作为模式判别时输入单元数是特征维数,输入单元数是类数。但中间隐层的单元数如何确定则缺乏有效的方法。一般来说,问题越复杂,需要的隐层单元越多;或者说同样的问题,隐层单元越多越容易收敛,但隐层单元过多会增加使用时的计算量,甚至产生“过学习”“训练过度”效果,使对未曾出现过的样本推广能力变差。

中间隐层数:对于多类模式识别问题,要求网络输出把特征空间划分为一些不同的类区(对应不同的类别),每一隐层单元可形成一个超平面N个超平面可将D维空间划分成的区域数(类数):$M(N, D)=\sum_{i=0}^D N_i$

当N<D时,M=2^N。设有P个样本,我们不知道它们实际上应该分成多少类,为保险起见,可假设M=P(P个样本分成P类),这样,当N<D时由式子可选隐层单元数N=log2P,这只是个参考数字,因为所需隐层单元数主要取决对于问题复杂程度而非样本数,只是复杂问题确实需要大量样本。

可先选择较多的隐层单元数,学习完成后再逐步删除一些隐层单元,删除的原则可考虑某一层的贡献。例如,其输出端各权值绝对值大小,或输入端权向量是否与其他单元接近。更直接直观的就是一层一层删除试验看效果,以此确定删除哪一层。

BP算法应用:原理上看,除了三层网络外可以用于四层或更多层前馈网络,三层网络可应付任何问题,但是较为复杂的问题用更多层网络结果可能更精确。但实际上,用于多于三层的网络时,陷入局部极小点而不收敛的可能性很大,此时需要更多的先验知识缩小搜索范围或找出一些原则来逐层构筑隐层。——是一种梯度快速下降法,易出现局部极小问题,所以BP是不完备的


二、深度学习

深度学习是对传统的人工神经网络算法进行了改进,通过模仿人的大脑处理信号时的多层抽象机制来完成对数据的识别分类。“深度”指神经网络的多层结构。

传统的模式识别应用中,基本处理流程是:(训练)数据预处理---在预处理后的数据上进行特征提取---利用这些特征采用各种算法(SVM、CRF等)训练出模型---将测试数据的特征作为模型输入,输出分类或标注的结果。其中特征提取至关重要,好坏直接影响分类模型的结果,但这一步也很困难,如图像的常用特征还是SIFT、HOG。但是深度学习方法可以首先从原始数据中无监督地学习特征,将学习到的特征作为之后各层的输入,省去了人工设计特征的步骤。

浅层网络学习能力有限,计算网络模型参数的策略:首先随机初始网络各层参数权重,然后根据训练数据上方差函数最小原则,采用梯度下降迭代计算参数。这不适用深层网络的参数训练,会出现局部极小而得不到全局最优解。而深度学习参数学习策略:首先逐层学习网络参数,之后进行调优——首先逐层训练模型参数,上一层的输出作为本层输入,经过本层编码器(激励函数构成)产生输出,调整本层的参数使得误差最小,如此逐层训练,每一层都是无监督学习,最后可用反向传播等算法对模型参数进行微调(调优),用监督学习去调整所有层。

常用的深度学习方法:栈式、AutoEncoder、Sparse Coding、Restrict Boltzmann Machine(RBM)等。

1、自编码算法AutorEncoder

以一个浅层的(三层)神经网络为例,假设只有一个没有类别的训练集合x,可使用自编码神经网络,用反向传播算法来学习参数:

自编码神经网络尝试使目标值等于输入值,即h_W,b ≈ x,这种学习方法的意义在于数据的压缩,用一定量的神经元来产生原始数据中的大部分信息,目的类似于PCA的数据降维。如果给中间隐藏层的神经元加入稀疏性限制,当神经元数量较大时仍可以发现输入数据中一些有趣的结构。稀疏性可以被解释为,假设激活函数是Sigmoid函数,当神经元的输出接近1时被激活,接近0时被抑制,那么神经元大部分时间都被抑制的限制称为稀疏限制。为了实现这一抑制,可在优化函数中加入额外的惩罚因子。

$\mathrm{KL}\left(\rho \| \hat{\rho}_i\right)=\sum_{i=1}^{S_2} \rho \log \frac{\rho}{\hat{\rho}_i}+(1-\rho) \log \frac{1-\rho}{1-\hat{\rho_i}}$

ρ是稀疏性参数,通常接近于0,$\hat{\rho}_i=\frac{1}{m} \sum_{i=1}^m\left[a_j^{(2)}\left(x^{(i)}\right)\right]$$a_j^{(2)}\left(x^{(i)}\right)$表示输出x时隐藏神经元j的激活程度,S2是隐藏层中的神经元数量,j依次代表隐藏层中每个神经元。该惩罚因子实际上是基于相对熵的概念。现在总体的代价函数可以表示成:

$J(W, b)=J(W, b)+\beta \sum_{i=1}^{S_2} \operatorname{KL}\left(\rho \| \hat{\rho}_i\right)$

β控制惩罚因子的权重,ρ^取决于W,b。之后可以使用反向传播算法来训练参数。

2、自组织编码深度网络

上面介绍的是一个包含输入层、隐藏层、输出层的三层神经网路,仅包含一层隐藏层,非常“浅”。下面讨论包含多个隐藏层的深度网络。

深度网络可计算更多复杂的输入特征,这是因为每一层的激活函数是一根非线性函数,每一个隐藏层可以对上一层的输出进行非线性交换,因此深度神经网络可以学习到更加复杂的函数关系。相比“浅层网络”其主要优势在于可以用更加紧凑简洁的方式来表达函数集合,但是深度网络参数训练不能用简单的梯度传播算法,原因:①简单的梯度传播算法需要已标记数据来完成训练,但有时获取足够的标记数据成本较高,而不充足的数据又会降低模型性能;②对于深层网络,易出现只收敛到局部的极值,得不到全局极值;③在使用反向传播算法计算导数时,随着网络的加深,梯度的幅度会急剧减小,称为梯度弥散。为解决这些问题,深度网络这样做:

①首先采用无监督的学习方式来学习特征,不需要大量已标注的数据;②之后采用逐层贪婪的训练方法(每次只训练网络的一层,各层参数逐步训练得到);③BP算法微调

①栈式AutorEncoder自动编码器

这是最简单的一种方法如下图所示。从第一层开始利用AutorEncoder的思想只训练一层参数,训练后固定该层参数,以其输出作为下一层的输入重复上述过程,以此得到每一层的权重,这种方法也称作逐层贪婪训练。后续还可以用BP算法进行微调以得到更好结果。

如果只对分类目的感兴趣,那么常用的做法是丢掉解码器直接把最后一层的输出作为特征输入到Softmax分类器进行分类,这样分类器的分类错误的梯度值就可以直接反向传播给编码层

②Sparse Coding稀疏编码

如果把AutorEncoder中输出和输入必须相等的限制放松,同时利用线性代数中基的概念,即 $O=a_1 \phi_1+a_2 \phi_2+\cdots+a_n \phi_n$,其中$\phi _i$是基,$a_i$是系数,可以得到这样一个优化问题:最小I和O中间的距离,其中I表示输入,O表示输出。通过求解这个最优化式子,可求解系数$\phi _i$$a_i$,这种方法就叫Sparse Coding

稀疏性:只有很少的几个远大于0的元素,即系数a_i是稀疏的,稀疏编码算法是一种无监督学习方法,用来寻找一组“超完备”基向量来更高效地表示样本数据。与PCA方法不同,这里的“超完备”基向量比输入向量的维度还要大——好处是可更高效地找出隐含在数据内部的结构和模式

算法还需要一个评判标准“稀疏性”解决超完备而导致的退化问题。算法分为两个部分:

①训练阶段:例如,给定一系列图像X,我们需要学习得到一组基 。稀疏编码算法体现了k均值的思想,其训练过程类似,可迭代计算使得下式最小:

$\min _{a, \phi} \sum_{i=1}^m\left\|x_i-\sum_{j=1}^k a_{i, j} \phi_j\right\|^2+\lambda \sum_{i=1}^m \sum_{j=1}^k\left|a_{i, j}\right|$

每次迭代分两步,首先固定\phi,然后调整a,使目标函数最小,之后固定a,调整\phi,使目标函数最小。这样不断迭代,直至收敛,可以得到一组基。 

②编码阶段:给一个新得图像X,由上一步得到得基,通过解Lasso问题得到稀疏向量a,即可得到图像X得稀疏向量

3、卷积神经网络模型(续下次)

卷积神经网络(CNN)是一种有监督深度模型框架,尤其适合处理二维数据问题,如行人检测、人脸识别、信号处理等领域,是带有卷积结构的深度神经网络,也是首个真正意义上成功训练多层网络的算法。——续下次博客


拓展:

1、SIFT,即尺度不变特征转换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述子。这种描述具有尺度不变性,可在图 像中检测出关键点,是一种局部特征描述子。

2、HOG,方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特 征通过计算和统计图像局部区域的梯度方向直方图来构成特征。 主要思想:在一副图像中,局部目标的表象和形状能够被梯度或边缘的方向密度分布很好地描述。 本质为:梯度的统计信息,而梯度主要存在于边缘的地方。

3、k均值聚类算法的基本原理:根据数据的密集程度寻找相对密集数据的质心,再根据质心完成数据分类。可参考:图解k均值聚类算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java基础学习打卡10】JDK下载与安装

目录 前言一、JDK下载1.JDK官网2.版本说明3.JDK 11下载 二、JDK安装1.JDK安装2.JDK安装目录介绍 总结 前言 本文主要介绍JDK 11 如何从官网下载&#xff0c;及如何在 Windows 11 系统安装&#xff0c;下载与安装很简单&#xff0c;主要是有少许的细节需要说明。 一、JDK下载 …

AI实战营第二期 第九节 《底层视觉与MMEditing》——笔记10

文章目录 AI实战营第二期 第九节 《底层视觉与MMEditing》什么是超分辨率图像分辨率的目标应用方向超分的类型单图超分的解决思路 深度学习时代的超分辨率算法SRCNNFast SRCNNSRResNet 感知损失 VS. 均方误差均方误差感知损失 对抗生成网络GAN应用于超分辨率如何学习生成器网络…

flutter:数据持久化

简单的数据持久化 保存数据到本地磁盘是应用程序常用功能之一&#xff0c;比如保存用户登录信息、用户配置信息等。而保存这些信息通常使用 shared_preferences&#xff0c;它保存数据的形式为 Key-Value&#xff08;键值对&#xff09;&#xff0c;支持 Android 和 iOS。shar…

1. linux系统下在QT中配置OPenCV开发环境

1. 说明: 在Linux系统下配置OpenCV的开发环境,需要在官网上下载源码,并使用CMake工具对源码进行编译,与在Windows系统中配置相比复杂许多,本文linux系统为linux minit,opencv是最新版本4.7.0,不过对于linux和opencv的版本要求行不高。 效果展示: 2. 配置步骤: 2.1 …

深度学习(22)——YOLO系列

深度学习&#xff08;22&#xff09;——YOLO系列 文章目录 深度学习&#xff08;22&#xff09;——YOLO系列1. 物体检测方法的两种类型2. YOLO-v12.1 网络结构2.2 loss 函数2.3 NMS(非极大值抑制)2. 4 优缺点 3. YOLO v23. 1 相较于v1改进点3. 2 网络结构3.3 感受野3.4 特征融…

使用无代码工具开发一款问卷调查小程序

目录 1 创建项目2 创建页面3 创建后台4 前端调用后端5 预览总结 自2017年小程序概念提出以来&#xff0c;越来越多的场景已经可以在小程序上实现。比如我们在线预约、点餐、查询各类信息、购物等等。小程序的特点是不需要预先按照应用程序&#xff0c;使用时打开&#xff0c;不…

dpdk21.11 添加igb_uio模块

文章目录 前言igb_uio模块下载链接编译编译方式1&#xff1a;make编译方式2&#xff1a;mesonninja1. 解压&#xff0c;复制 dpdk-kmods/linux/igb_uio/ 到 dpdk-stable-21.11.4/kernel/linux/ 目录下2. vi dpdk-stable-21.11.4/kernel/linux/meson.build 4创建文件 meson.buil…

大模型入门(五)—— 基于peft微调ChatGLM模型

ChatGLM 是基于 General Language Model (GLM) 架构&#xff0c;针对中文问答和对话进行了优化。经过中英双语训练&#xff0c;辅以监督微调、反馈自助、人类反馈强化学习等技术&#xff0c;ChatGLM因为是中文大模型&#xff0c;在中文任务的表现要优于LLaMa&#xff0c;我在一…

ARP协议,带你了解ARP协议

目录 一、ARP协议概述 二、使用ARP的四种情况 三、ARP缓存 四、ARP的工作原理 1. 地址解析 2. 地址缓存 五、ARP报文格式 1. ARP请求报文格式 2. ARP响应报文格式 六、免费ARP 七、代理ARP 一、ARP协议概述 ARP&#xff08;Address Resolution Protocol&#xff09;地…

1、产品经理的宏观定义

什么是产品经理&#xff1f;为了引出来定义&#xff0c;我们来看一段对话&#xff0c;这个对话方式中的场景就是小明上了一年班&#xff0c;回家过年了&#xff0c;那亲戚可能就会会问小明在外面是做什么的&#xff1f; 亲戚&#xff1a;小明&#xff0c;你在外面是做什么的啊&…

# SIG Mesh协议学习

SIG Mesh协议学习 1. 简介 Bluetooth SIG组织在2017年7月17日发布了蓝牙Mesh标准. 蓝牙Mesh不同于传统Bluetooth Low Energy(BLE)协议的1对1, 1对多的通信方式, 它实现了多对多的通信. 这使得mesh网络中的各个节点之间可以相互通信. 蓝牙Mesh协议建立在BLE的物理层和链路层之…

Spark大数据处理学习笔记(3.8.2) Spark RDD典型案例-利用RDD统计每日新增用户

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【http://t.csdn.cn/Twpwe】 文章目录 一、任务目标二、准备工作2.1 在本地创建用户文件2.2 将用户文件上传到HDFS指定位置 三、完成任务3.1 在Spark Shell里完成任务3.1.1 读取文件&#xff0c;得到RDD3.1.2 倒排&am…

大模型入门(一)—— LLaMa/Alpaca/Vicuna

LLaMa模型是Meta开源的大模型&#xff0c;模型参数从7B到65B不等&#xff0c;LLaMa-7B在大多数基准测试上超过了GPT3-173B&#xff0c;而LLaMa-65B和Chinchilla-70B、PaLM-540B相比也极具竞争力。相比于ChatGPT或者GPT4来说&#xff0c;LLaMa可能效果上还有差距&#xff0c;但相…

python3 爬虫相关学习10:RE 库/ regex /regular experssion)正则表达式学习

目录 1 关于&#xff1a;re / regex / regular expression 1.1 什么是正则表达式 1.2 在python中导入 re 1.3 查看regex相关信息 2 正则表达式的相关符号 2.1 行定位符 2.2 元字符 (注意是 反斜杠\) 2.3 限定符号 2.4 字符类&#xff0c;字符集合 需要 中括号[] 2.…

Site-to-Site VPN配置和调试实践:构建安全的远程网络连接

Site-to-Site VPN配置和调试实践&#xff1a;构建安全的远程网络连接 【实验目的】 理解Site to Site VPN的含义。掌握Site to Site VPN的含义。验证配置。 【实验拓扑】 实验拓扑如下图所示。 实验拓扑 设备参数表如下表所示。 设备参数表 设备 接口 IP地址 子网掩码…

一组网格加载动画

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网格动画</title><style>import url("https://fonts.googleapis.com/css2?familyOrb…

蓝牙ble的常见概念

蓝牙广播 包组成结构 低功耗蓝牙一共有40个信道&#xff0c;频段范围从2402Mhz-2480Mhz&#xff0c;每2Mhz一个信道&#xff0c;37 38 39 是广播信道&#xff0c;其余为数据信道 一个广播信道最长37字节&#xff0c;有6字节用作蓝牙设备的MAC地址&#xff0c;我们只需要关注剩…

tftp服务器环境搭建与nfs服务器环境搭建

目录 tftp 服务器环境搭建 实验步骤&#xff1a; nfs 服务器环境搭建 实验步骤 tftp 服务器环境搭建 实验步骤&#xff1a; 一、 tftp 服务器环境搭建 1 、 打开一个命令行终端&#xff0c;执行如下命令查看是否已安装 tftp 服务器 $ dpkg -s tftpd-hpa 若显示如下信…

vue可视化面板创建项目

前端项目初始化步骤 安装 vue 脚手架 通过vue脚手架创建项目 在命令行输入vue ui 等待可视化界面打开 填写项目名称&#xff08;必须英文&#xff09;和仓库信息(可选填&#xff09;&#xff0c;然后点击下一步进入“预设面板” 这里根据需要选择一个选项&#xff0c;然后…

Node.js入门之 - 初识Node.js

初识 Node.js 1. 起源 Node.js 起源于 2009 年,由 Ryan Dahl 开发,起初的目的是为了解决一些网络应用运行缓慢的问题。 在 Node.js 之前,一般会采用 LAMP(Linux Apache MySQL PHP)或者 MEAN等技术栈开发 web 应用。这些技术通常会采用请求-响应模型: 客户端(浏览器)发送一…