神经网络的输入稀疏矩阵,神经网络中的矩阵运算

news2024/11/20 15:40:42

1、BP神经网络模型各个参数的选取问题

样本变量不需要那么多,因为神经网络的信息存储能力有限,过多的样本会造成一些有用的信息被丢弃。如果样本数量过多,应增加隐层节点数或隐层数目,才能增强学习能力。
一、隐层数
一般认为,增加隐层数可以降低网络误差(也有文献认为不一定能有效降低),提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向。一般来讲应设计神经网络应优先考虑3层网络(即有1个隐层)。一般地,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。对于没有隐层的神经网络模型,实际上就是一个线性或非线性(取决于输出层采用线性或非线性转换函数型式)回归模型。因此,一般认为,应将不含隐层的网络模型归入回归分析中,技术已很成熟,没有必要在神经网络理论中再讨论之。
二、隐层节点数
在BP 网络中,隐层节点数的选择非常重要,它不仅对建立的神经网络模型的性能影响很大,而且是训练时出现“过拟合”的直接原因,但是目前理论上还没有一种科学的和普遍的确定方法。 目前多数文献中提出的确定隐层节点数的计算公式都是针对训练样本任意多的情况,而且多数是针对最不利的情况,一般工程实践中很难满足,不宜采用。事实上,各种计算公式得到的隐层节点数有时相差几倍甚至上百倍。为尽可能避免训练时出现“过拟合”现象,保证足够高的网络性能和泛化能力,确定隐层节点数的最基本原则是:在满足精度要求的前提下取尽可能紧凑的结构,即取尽可能少的隐层节点数。研究表明,隐层节点数不仅与输入/输出层的节点数有关,更与需解决的问题的复杂程度和转换函数的型式以及样本数据的特性等因素有关。

谷歌人工智能写作项目:小发猫

2、BP神经网络的每一个样本可以是一个矩阵吗?如何输入?谢谢!

每个样本对应一组变量值,但是BP神经网络使用时一般不使用1个样本去训练,都是使用若干组样本,这样他的若干组样本就是矩阵了神经网络多样本矩阵参数。
直接定义
P=[
1 2 1 3;%这是一组样本
1 2 1 4;%这是第二组样本
...
];
这样就定义了输入矩阵。
输出矩阵也是同样的定义。
输入矩阵与输出矩阵的行数(样本个数)必须一致。
net(....);
train(net....);
如果报错,就把P和T同时转置(P=P';T=T';)一下。

3、如何通过人工神经网络实现图像识别

人工神经网络(Artificial Neural Networks)(简称ANN)系统从20 世纪40 年代末诞生至今仅短短半个多世纪,但由于他具有信息的分布存储、并行处理以及自学习能力等优点,已经在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。尤其是基于误差反向传播(Error Back Propagation)算法的多层前馈网络(Multiple-Layer Feedforward Network)(简称BP 网络),可以以任意精度逼近任意的连续函数,所以广泛应用于非线性建模、函数逼近、模式分类等方面。
目标识别是模式识别领域的一项传统的课题,这是因为目标识别不是一个孤立的问题,而是模式识别领域中大多数课题都会遇到的基本问题,并且在不同的课题中,由于具体的条件不同,解决的方法也不尽相同,因而目标识别的研究仍具有理论和实践意义。这里讨论的是将要识别的目标物体用成像头(红外或可见光等)摄入后形成的图像信号序列送入计算机,用神经网络识别图像的问题。
一、BP 神经网络
BP 网络是采用Widrow-Hoff 学习算法和非线性可微转移函数的多层网络。一个典型的BP 网络采用的是梯度下降算法,也就是Widrow-Hoff 算法所规定的。backpropagation 就是指的为非线性多层网络计算梯度的方法。一个典型的BP 网络结构如图所示。
我们将它用向量图表示如下图所示。
其中:对于第k 个模式对,输出层单元的j 的加权输入为
该单元的实际输出为
而隐含层单元i 的加权输入为
该单元的实际输出为
函数f 为可微分递减函数
其算法描述如下:
(1)初始化网络及学习参数,如设置网络初始权矩阵、学习因子等。
(2)提供训练模式,训练网络,直到满足学习要求。
(3)前向传播过程:对给定训练模式输入,计算网络的输出模式,并与期望模式比较,若有误差,则执行(4);否则,返回(2)。
(4)后向传播过程:a. 计算同一层单元的误差;b. 修正权值和阈值;c. 返回(2)
二、 BP 网络隐层个数的选择
对于含有一个隐层的三层BP 网络可以实现输入到输出的任何非线性映射。增加网络隐层数可以降低误差,提高精度,但同时也使网络复杂化,增加网络的训练时间。误差精度的提高也可以通过增加隐层结点数来实现。一般情况下,应优先考虑增加隐含层的结点数。
三、隐含层神经元个数的选择
当用神经网络实现网络映射时,隐含层神经元个数直接影响着神经网络的学习能力和归纳能力。隐含层神经元数目较少时,网络每次学习的时间较短,但有可能因为学习不足导致网络无法记住全部学习内容;隐含层神经元数目较大时,学习能力增强,网络每次学习的时间较长,网络的存储容量随之变大,导致网络对未知输入的归纳能力下降,因为对隐含层神经元个数的选择尚无理论上的指导,一般凭经验确定。
四、神经网络图像识别系统
人工神经网络方法实现模式识别,可处理一些环境信息十分复杂,背景知识不清楚,推理规则不明确的问题,允许样品有较大的缺损、畸变,神经网络方法的缺点是其模型在不断丰富完善中,目前能识别的模式类还不够多,神经网络方法允许样品有较大的缺损和畸变,其运行速度快,自适应性能好,具有较高的分辨率。
神经网络的图像识别系统是神经网络模式识别系统的一种,原理是一致的。一般神经网络图像识别系统由预处理,特征提取和神经网络分类器组成。预处理就是将原始数据中的无用信息删除,平滑,二值化和进行幅度归一化等。神经网络图像识别系统中的特征提取部分不一定存在,这样就分为两大类:① 有特征提取部分的:这一类系统实际上是传统方法与神经网络方法技术的结合,这种方法可以充分利用人的经验来获取模式特征以及神经网络分类能力来识别目标图像。特征提取必须能反应整个图像的特征。但它的抗干扰能力不如第2类。② 无特征提取部分的:省去特征抽取,整副图像直接作为神经网络的输入,这种方式下,系统的神经网络结构的复杂度大大增加了,输入模式维数的增加导致了网络规模的庞大。此外,神经网络结构需要完全自己消除模式变形的影响。但是网络的抗干扰性能好,识别率高。
当BP 网用于分类时,首先要选择各类的样本进行训练,每类样本的个数要近似相等。其原因在于一方面防止训练后网络对样本多的类别响应过于敏感,而对样本数少的类别不敏感。另一方面可以大幅度提高训练速度,避免网络陷入局部最小点。
由于BP 网络不具有不变识别的能力,所以要使网络对模式的平移、旋转、伸缩具有不变性,要尽可能选择各种可能情况的样本。例如要选择不同姿态、不同方位、不同角度、不同背景等有代表性的样本,这样可以保证网络有较高的识别率。
构造神经网络分类器首先要选择适当的网络结构:神经网络分类器的输入就是图像的特征向量;神经网络分类器的输出节点应该是类别数。隐层数要选好,每层神经元数要合适,目前有很多采用一层隐层的网络结构。然后要选择适当的学习算法,这样才会有很好的识别效果。在学习阶段应该用大量的样本进行训练学习,通过样本的大量学习对神经网络的各层网络的连接权值进行修正,使其对样本有正确的识别结果,这就像人记数字一样,网络中的神经元就像是人脑细胞,权值的改变就像是人脑细胞的相互作用的改变,神经网络在样本学习中就像人记数字一样,学习样本时的网络权值调整就相当于人记住各个数字的形象,网络权值就是网络记住的内容,网络学习阶段就像人由不认识数字到认识数字反复学习过程是一样的。神经网络是按整个特征向量的整体来记忆图像的,只要大多数特征符合曾学习过的样本就可识别为同一类别,所以当样本存在较大噪声时神经网络分类器仍可正确识别。在图像识别阶段,只要将图像的点阵向量作为神经网络分类器的输入,经过网络的计算,分类器的输出就是识别结果。
五、仿真实验
1、实验对象
本实验用MATLAB 完成了对神经网络的训练和图像识别模拟。从实验数据库中选择0~9 这十个数字的BMP 格式的目标图像。图像大小为16×8 像素,每个目标图像分别加10%、20%、30%、40%、50%大小的随机噪声,共产生60 个图像样本。将样本分为两个部分,一部分用于训练,另一部分用于测试。实验中用于训练的样本为40个,用于测试的样本为20 个。随机噪声调用函数randn(m,n)产生。
2、网络结构
本试验采用三层的BP 网络,输入层神经元个数等于样本图像的象素个数16×8 个。隐含层选24 个神经元,这是在试验中试出的较理想的隐层结点数。输出层神经元个数就是要识别的模式数目,此例中有10 个模式,所以输出层神经元选择10 个,10 个神经元与10 个模式一一对应。
3、基于MATLAB 语言的网络训练与仿真
建立并初始化网络
1
2
3
4
5
6
7
8

% ================
S1 = 24;% 隐层神经元数目S1 选为24
[R,Q] = size(numdata);
[S2,Q] = size(targets);
F = numdata;
P=double(F);
net = newff(minmax(P),[S1 S2],{'logsig'
'logsig'},'traingda','learngdm')
这里numdata 为训练样本矩阵,大小为128×40, targets 为对应的目标输出矩阵,大小为10×40。
newff(PR,[S1 S2…SN],{TF1 TF2…TFN},BTF,BLF,PF)为MATLAB 函数库中建立一个N 层
前向BP 网络的函数,函数的自变量PR 表示网络输入矢量取值范围的矩阵[Pmin max];S1~SN 为各层神经元的个数;TF1~TFN 用于指定各层神经元的传递函数;BTF 用于指定网络的训练函数;BLF 用于指定权值和阀值的学习函数;PF 用于指定网络的性能函数,缺省值为‘mse’。
设置训练参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

net.performFcn = 'sse'; %平方和误差
性能函数
net.trainParam.goal = 0.1; %平方和误
差目标
net.trainParam.show = 20; %进程显示
频率
net.trainParam.epochs = 5000;%最大训
练步数
net.trainParam.mc = 0.95; %动量常数
网络训练
net=init(net);%初始化网络
[net,tr] = train(net,P,T);%网络训练
对训练好的网络进行仿真
D=sim(net,P);
A = sim(net,B);
B 为测试样本向量集,128×20 的点阵。D 为网络对训练样本的识别结果,A 为测试样本的网络识别结果。实验结果表明:网络对训练样本和对测试样本的识别率均为100%。如图为64579五个数字添加50%随机噪声后网络的识别结果。
六、总结
从上述的试验中已经可以看出,采用神经网络识别是切实可行的,给出的例子只是简单的数字识别实验,要想在网络模式下识别复杂的目标图像则需要降低网络规模,增加识别能力,原理是一样的。

4、请问一下matlab里的神经网络在做分类的时候是怎么选定目标矩阵的?

建神经网络要确定好神经网络的输入的个数,输出个数,然后根据想要实现的功能选择神经网络。
如果你这个神经网络只是做一个简单的分类,
p是输入,2x15,那么神经网络的输入个数为2,而样本数为15.
goal是目标输出,一般情况下不会是这么随便的,会根据具体问题给出具体数据,正因为它是一个例子所以把它定为goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)];(goal是一个2x15的数组),那么该神经网络的输出个数就是2.
所以所这里把goal定义为[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)],仅仅是作为一个例子简便的要求而已。当你遇到实际问题的时候,goal就不同了。

5、BP神经网络的训练集需要大样本吗?一般样本个数为多少?

BP神经网络的训练集需要大样本吗?一般样本个数为多少?
BP神经网络样本数有什么影响
学习神经网络这段时间,有一个疑问,BP神经网络中训练的次数指的网络的迭代次数,如果有a个样本,每个样本训练次数n,则网络一共迭代an次,在n>>a 情况下 , 网络在不停的调整权值,减小误差,跟样本数似乎关系不大。而且,a大了的话训练时间必然会变长。
换一种说法,将你的数据集看成一个固定值, 那么样本集与测试集 也可以按照某种规格确定下来如7:3 所以如何看待 样本集的多少与训练结果呢? 或者说怎么使你的网络更加稳定,更加符合你的所需 。
我尝试从之前的一个例子中看下区别
如何用70行Java代码实现深度神经网络算法
作者其实是实现了一个BP神经网络 ,不多说,看最后的例子
一个运用神经网络的例子
最后我们找个简单例子来看看神经网络神奇的效果。为了方便观察数据分布,我们选用一个二维坐标的数据,下面共有4个数据,方块代表数据的类型为1,三角代表数据的类型为0,可以看到属于方块类型的数据有(1,2)和(2,1),属于三角类型的数据有(1,1),(2,2),现在问题是需要在平面上将4个数据分成1和0两类,并以此来预测新的数据的类型。

图片描述
我们可以运用逻辑回归算法来解决上面的分类问题,但是逻辑回归得到一个线性的直线做为分界线,可以看到上面的红线无论怎么摆放,总是有一个样本被错误地划分到不同类型中,所以对于上面的数据,仅仅一条直线不能很正确地划分他们的分类,如果我们运用神经网络算法,可以得到下图的分类效果,相当于多条直线求并集来划分空间,这样准确性更高。

图片描述
简单粗暴,用作者的代码运行后 训练5000次 。根据训练结果来预测一条新数据的分类(3,1)

预测值 (3,1)的结果跟(1,2)(2,1)属于一类 属于正方形
这时如果我们去掉 2个样本,则样本输入变成如下
//设置样本数据,对应上面的4个二维坐标数据
double[][] data = new double[][]{{1,2},{2,2}};
//设置目标数据,对应4个坐标数据的分类
double[][] target = new double[][]{{1,0},{0,1}};
1
2
3
4
1
2
3
4


则(3,1)结果变成了三角形,
如果你选前两个点 你会发现直接一条中间线就可以区分 这时候的你的结果跟之前4个点时有区别 so 你得增加样本 直到这些样本按照你所想要的方式分类 ,所以样本的多少 重要性体现在,样本得能反映所有的特征值(也就是输入值) ,样本多少或者特征(本例子指点的位置特征)决定的你的网络的训练结果,!!!这是 我们反推出来的结果 。这里距离深度学习好像近了一步。
另外,这个70行代码的神经网络没有保存你训练的网络 ,所以你每次运行都是重新训练的网络。其实,在你训练过后 权值已经确定了下来,我们确定网络也就是根据权值,so只要把训练后的权值保存下来,将需要分类的数据按照这种权值带入网络,即可得到输出值,也就是一旦网络确定, 权值也就确定,一个输入对应一个固定的输出,不会再次改变!个人见解。
最后附上作者的源码,作者的文章见开头链接
下面的实现程序BpDeep.java可以直接拿去使用,
import java.util.Random;
public class BpDeep{
public double[][] layer;//神经网络各层节点
public double[][] layerErr;//神经网络各节点误差
public double[][][] layer_weight;//各层节点权重
public double[][][] layer_weight_delta;//各层节点权重动量
public double mobp;//动量系数
public double rate;//学习系数
public BpDeep(int[] layernum, double rate, double mobp){
this.mobp = mobp;
this.rate = rate;
layer = new double[layernum.length][];
layerErr = new double[layernum.length][];
layer_weight = new double[layernum.length][][];
layer_weight_delta = new double[layernum.length][][];
Random random = new Random();
for(int l=0;l<layernum.length;l++){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l+1<layernum.length){
layer_weight[l]=new double[layernum[l]+1][layernum[l+1]];
layer_weight_delta[l]=new double[layernum[l]+1][layernum[l+1]];
for(int j=0;j<layernum[l]+1;j++)
for(int i=0;i<layernum[l+1];i++)
layer_weight[l][j][i]=random.nextDouble();//随机初始化权重
}
}
}
//逐层向前计算输出
public double[] computeOut(double[] in){
for(int l=1;l<layer.length;l++){
for(int j=0;j<layer[l].length;j++){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;i<layer[l-1].length;i++){
layer[l-1][i]=l==1?in[i]:layer[l-1][i];
z+=layer_weight[l-1][i][j]*layer[l-1][i];
}
layer[l][j]=1/(1+Math.exp(-z));
}
}
return layer[layer.length-1];
}
//逐层反向计算误差并修改权重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;j<layerErr[l].length;j++)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);
while(l-->0){
for(int j=0;j<layerErr[l].length;j++){
double z = 0.0;
for(int i=0;i<layerErr[l+1].length;i++){
z=z+l>0?layerErr[l+1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i]+rate*layerErr[l+1][i]*layer[l][j];//隐含层动量调整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隐含层权重调整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距动量调整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距权重调整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//记录误差
}
}
}
public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
下面是这个测试程序BpDeepTest.java的源码:
import java.util.Arrays;
public class BpDeepTest{
public static void main(String[] args){
//初始化神经网络的基本配置
//第一个参数是一个整型数组,表示神经网络的层数和每层节点数,比如{3,10,10,10,10,2}表示输入层是3个节点,输出层是2个节点,中间有4层隐含层,每层10个节点
//第二个参数是学习步长,第三个参数是动量系数
BpDeep bp = new BpDeep(new int[]{2,10,2}, 0.15, 0.8);
//设置样本数据,对应上面的4个二维坐标数据
double[][] data = new double[][]{{1,2},{2,2},{1,1},{2,1}};
//设置目标数据,对应4个坐标数据的分类
double[][] target = new double[][]{{1,0},{0,1},{0,1},{1,0}};
//迭代训练5000次
for(int n=0;n<5000;n++)
for(int i=0;i<data.length;i++)
bp.train(data[i], target[i]);
//根据训练结果来检验样本数据
for(int j=0;j<data.length;j++){
double[] result = bp.computeOut(data[j]);
System.out.println(Arrays.toString(data[j])+":"+Arrays.toString(result));
}
//根据训练结果来预测一条新数据的分类
double[] x = new double[]{3,1};
double[] result = bp.computeOut(x);
System.out.println(Arrays.toString(x)+":"+Arrays.toString(result));
}
}

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

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

相关文章

牛客前端刷题(九)—— 打包篇

还在担心面试不通过吗&#xff1f;给大家推荐一个超级好用的刷面试题神器&#xff1a;牛客网&#xff0c;里面涵盖了各个领域的面试题库&#xff0c;还有大厂真题哦&#xff01; 赶快悄悄的努力起来吧&#xff0c;不苒在这里衷心祝愿各位大佬都能顺利通过面试。 面试专栏分享&a…

greenplum 源码解析 FTS辅助进程--ReadMe

简介 在greenplum数据库中master节点有一个专属进程Fault Tolerance Service (FTS: 容错服务)&#xff0c;其主要功能是检测所有segment节点的健康信息&#xff0c;如果其检测到segment节点的primary出现异常[硬件故障/宕机]&#xff0c;会在第一时间将其对应的mirror提升为新的…

MySql(50)MySQL日志

文章目录MySQL支持的日志日志类型日志的弊端慢查询日志(slow query log)通用查询日志查看当前状态启动日志永久启动临时启动查看日志删除\刷新日志错误日志(error log)删除\刷新日志二进制日志(bin log)查看默认情况日志参数设置查看日志使用日志恢复数据删除二进制日志PURGE M…

vue3 响应式对象的 api ,你全用过了吗?

文章目录Ⅰ. ref、reactive ( 递归监听 )Ⅱ. isRef、isReactive ( 判断 )Ⅲ. toRef 和 toRefs ( 解构 )Ⅳ. toRaw 、 markRaw ( 解除代理)Ⅴ. unref ( 拷贝 )Ⅵ. shallowRef 、shallowReactive&#xff08; 非递归监听 &#xff09;Ⅶ. triggerRef &#xff08;强制更新&#x…

红黑树原理及旋转

红黑树&#xff0c;本质上来说就是一棵二叉查找树 但它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡 保证了红黑树的查找、插入、删除的时间复杂度最坏为O(log n) 但它是如何保证一棵n个结点的红黑树的高度始终保持在h logn的呢&#xff1f;这就引出了红黑…

相似度_对抗学习:SimCSE: Simple Contrastive Learning of Sentence Embeddings

SimCSE: Simple Contrastive Learning of Sentence Embeddings 这篇论文&#xff0c;我觉得有意思。在创造对抗学习的正负例时&#xff0c;正例直接使用它本身。将同一个句子传递给预先训练好的编码器两次&#xff1a;通过应用两次dropout&#xff0c;我们可以得到两个不同的嵌…

云计算基础:云计算越来越广泛,我们应该如何去学习云计算

随着时代的发展&#xff0c;云计算越来越普及&#xff0c;越大众化&#xff0c;使用的人越来越多&#xff0c;我们应该如何去学习这门技术呢?这篇文章我们就来介绍如何学习我们的云计算。 学前介绍&#xff1a; 学前介绍 学习资料&#xff1a;HedEX Lite、产品文档、笔记、P…

非科班程序员被裁员后反而涨薪了200%,这两个月他都经历了哪些?

今年年初开始&#xff0c;裁员潮一浪接着一浪翻滚而来&#xff0c;让互联网人胆颤心惊&#xff0c;时刻担心下一波裁员是否就要降临到自己身上。 小帅&#xff08;化名&#xff09;是一个原本月薪8k&#xff0c;在小外包公司做政府项目的一名普通员工&#xff0c;前不久就被裁员…

数据仓库建模(四):维度表的设计

数据仓库建模&#xff08;四&#xff09;&#xff1a;维度表的设计一、维度表的整体结构1.1 维度表的结构设计1.2 维度代理键1.3 自然键、超久键和超自然键1.4 下钻与上卷1.5 维度退化1.6 非规范化的扁平维度1.7 多层次维度1.8 维度属性的标识与状态信息1.9 维度表中的空值属性…

趣学算法(2)

14天阅读挑战赛 目录前言一 几类时间复杂度二 兔子数列1.问题分析2.方法13.方法24.方法3最后前言 这篇文章是《趣学算法》的读书笔记&#xff0c;也对数据结构与算法的初步介绍&#xff0c;阅读这篇文章&#xff0c;我会带你改进一个算法。 一 几类时间复杂度 常见的算法时间复…

Vue项目的记录(十三)

1.登录注册静态组件 assets这个文件夹放所有的组件公用的静态资源 在样式当中也可以使用符号&#xff0c;&#xff08;src目录的别名&#xff09;&#xff0c;要注意的是在前面你加上~ 2.注册业务 这里的验证码&#xff0c;正常来说应该是要后台发送到用户手机上&#xff0c…

拓端tecdat|R语言辅导配对检验分析案例

全文链接&#xff1a;http://tecdat.cn/?p3424 原文出处&#xff1a;拓端数据部落公众号 什么是检验对&#xff1f; 检验对的形式 &#xff08;x1&#xff0c;x2&#xff09; 出现在两种情况中&#xff1a; 对同一实体执行两次测量。例如&#xff0c;一项评估新型胰岛素疗效…

C-文件操作实现数据持久化,帮你快速了解文件操作函数

目录 一.了解文件 二.文件的打开和关闭 三.顺序读写文件函数 fputc字符输入函数 fgetc字符输入函数 fputs文本行输出函数 fgets文本行输入函数 fprintf格式化输出函数 fscanf格式化输入函数 fwrite二进制输出函数 fread二进制输入函数 四. 解析上述的流 五.文件的随机…

Redis 主从安装-Centos

Redis 主从安装-Centos 由于机器有限&#xff0c;所以接下来的教程都是在一台虚拟机中进行部署安装. Redis主从工作原理 如果你为master配置了一个slave&#xff0c;不管这个slave是否是第一次连接上Master&#xff0c;它都会发送一个PSYNC命令给master请求复制数据。master…

计算机网络--传输层

这篇博客博主应该在前天就要完成的&#xff0c;但是博主忙乱了&#xff0c;又堕落几天&#xff0c;希望大家别像我一样最近学习三天打鱼&#xff0c;两个天晒网的。此后博主为了激励自己重头再来&#xff0c;就特意换了个发型&#xff0c;哈哈。回到正题&#xff0c;传输层也是…

操作系统真相还原_第4章:进入保护模式

文章目录实模式的缺陷保护模式的扩展段寄存器的变化寄存器扩展寻址扩展全局描述符表GDT描述符格式字段含义进入保护模式步骤解释示例说明程序编写boot.incmbr.sloader.s编译并写入硬盘启动bochs执行实模式的缺陷 1、实模式下用户程序所引用的地址都是指向真实的物理地址&#…

计算机等级考试Python二级

补记录一下之前考Python二级的一些相关理论记录 数据结构与算法 算法杂度 算法复杂度用来衡量算法的优劣&#xff0c;它包括算法的时间复杂度和算法的空间复杂度 时间复杂度&#xff1a;执行算法所需要的计算量【所需要的计算工作量是用算法所执行的基本运算次数来度量的】 …

子串和子序列问题-动态规划向

1. 子串子序列问题概述 有关于子序列和子串的问题是字符串或者数组经常会遇到的问题&#xff0c;一般我们经常使用多指针&#xff0c;滑动窗口&#xff0c;回溯&#xff0c;动态规划的方式去解决&#xff0c;而本篇重点关注能用动态规划解决或者说明显使用动态规划解决的子串问…

Java开发手册解析_编程规约-集合处理

前言 《Java开发手册&#xff08;黄山版&#xff09;》编程规约-集合处理 该章节的知识点基本都来源于jdk源码&#xff0c;将结合源码及例子进行理解 备注&#xff1a;文章中的详细及说明为手册本身内容 博客地址&#xff1a;芒果橙的个人博客 【http://mangocheng.com】 1.【强…

服务与发现

文章目录服务与发现什么是服务发现应用层服务发现模式平台层服务发现模式服务与发现 假设你正在编写一些调用具有 REST API 的服务的代码&#xff0c;为了发出请求&#xff0c;你的代码需要知道服务实例的网络位置&#xff08;IP 地址和端口&#xff09;&#xff0c;在物理硬件…