基于粒子群算法的神经网络非线性函数拟合

本文探讨了粒子群优化算法(PSO)在解决BP神经网络收敛速度慢和易陷入局部最优问题上的应用。通过引入模拟退火和混沌理论,提出模拟退火粒子群算法(SAPSO)和混沌模拟退火粒子群算法(CSAPSO),并将这些改进算法应用于非线性函数的拟合。实验结果表明,改进的PSO算法能有效提升BP网络的拟合效果和全局搜索能力,同时也分析了超参数对模型性能的影响。
摘要由CSDN通过智能技术生成

基于粒子群算法的神经网络非线性函数拟合

文章初心

最近在学机器学习,自己的方向是智能算法,课程报告需要,于是试着把机器学习和粒子群算法相结合,写出来供大家参考,交流。

文末有这部分内容相关的代码,已开源

摘要

BP神经网络的结构简单,可操作性强,但也存在收敛速度慢,易陷入局部最优值的缺点。随着科学技术的飞速发展,智能算法也逐步崭露头角,它是智能领域中的重要组成部分,现在已被广泛应用到了数据处理、模式识别、机器学习等多个领域。粒子群算法模拟鸟群觅食行为,以其简单、高效特点被广泛运用,但其也存在易陷入局部最优解、收敛精度低等缺点。本文基于基本粒子群算法的特点,提出改进的粒子群算法——模拟退火粒子群算法(Simulated Annealing Particle Swarm Optimization Algorithm, SAPSO)和混沌模拟退火粒子群算法(Chaotic Simulated Annealing Particle Swarm Optimization Algorithm, CSAPSO),并将其运用于BP神经网络非线性函数拟合中,同时分析了超参数对神经网络模型的影响。仿真实验验证了粒子群算法在BP神经网络运用的有效性。

关键词

粒子群算法;混沌;模拟退火;BP神经网络;函数拟合

BP神经网络

BP(Back-Propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络。BP神经网络是多层前馈型神经网络中的一种,属于人工神经网络的一类,可以对任何一种非线性输入输出关系进行模仿,因此被广泛应用在分类识别(classification)、回归(regression)、压缩(compression)、逼近(fitting)等领域。在工程应用中,大约百分之八十的神经网络模型都选择采用BP神经网络或者改进的BP神经网络。BP神经网络的结构简单,可操作性强,可以很好的处理在模拟线性与非线性的输入输出关系方面的问题。

1.1. BP神经网络结构

BP网络由输入层、隐层和输出层组成,隐层可以有一层或多层。BP网络的优势就是能学习和储存大量的输入输出的关系,而不用事先指出这种数学关系,同时它能以任意精度逼近任一非线性函数。

图1 BP神经网络结构图

图中, x x x 为输入数据, y y y 为输出数据, i i i为输入层, j j j为隐藏层, k k k为输出层; W j i W_{ji} Wji为隐含层权值, W k j W_{kj} Wkj 为输出层权值, f ( x ) f(x) f(x)为神经元激励函数,BP算法常用 s i g m o i d sigmoid sigmoid 函数作为其激励函数。

1.2. BP神经网络训练算法

(1)初始化:置所有权值为较小的随机数;
(2)提供训练集;
(3)计算实际输出:计算隐含层、输出层各神经元输出;
(4)计算目标值与实际输出的偏差MSE;
(5)计算 Δ W k j \Delta W_{kj} ΔWkj, Δ W j i \Delta W_{ji} ΔWji
(6)返回(2)重复计算,直到误差满足要求为止。

基本思想:利用输出后的误差来估计输出层前一层的误差,再用这层误差来估计更前一层误差,如此获取所有各层误差估计。这里的误差估计可以理解为某种偏导数,根据这种偏导数来调整各层的连接权值,再用调整后的连接权值重新计算输出误差。直到输出的误差达到符合的要求或者迭代次数。BP的传播对象就是“误差”,传播目的就是得到所有层的估计误差最小时系统的各参数值。

1.3. 本文的改进方案概述

针对BP神经网络特点,本文利用全局搜索能力较强的PSO算法优化该网络的网络参数。通过反向传播不断调整网络的权值和阈值,最后使全局误差系数最小。它的学习本质就是:对各连接权值的动态调整。同时针对PSO算法对离散的优化问题处理不佳并容易陷入局部最优的缺点,结合PSO算法的相应改进算法,对BP神经网络进行改进。对比分析不同算法对BP神经网络的改进效果,验证算法的有效性和性能。以下为BP的算法流程图:

图2 BP网络流程图

2. 基本粒子群算法及其改进算法

2.1 基本粒子群算法(Particle Swarm Optimization, PSO)

2.1.1 PSO算法原理

粒子群优化算法是由Kennedy和Eberhart通过模拟鸟群的社会行为提出的一种进化计算方法[1],其思想来源于人工生命和演化计算理论。粒子群算法的基本思想是:设定优化问题的每个潜在解为粒子,初始化阶段中随机选取一个粒子种群,每个粒子的性能由一个目标函数来衡量,通过此目标函数的适应值来衡量粒子所代表解的优劣,不断迭代寻优,从而得到更优的粒子种群,这个过程一直循环往复,直到达到满意的收敛条件[2]。

公式(1)(2)

其中, p p d p_{pd} ppd, p g d p_{gd} pgd分别表示粒子个体最优位置和群体最优位置。总得来说,公式(1)和(2)决定了粒子速度、位置的更新方式,体现在迭代中,即表现为粒子不断逼近最优解的过程。由于粒子群算法操作简单,收敛速度快的优点,被广泛应用于复杂问题的优化。

2.1.2 PSO算法的缺陷

PSO收敛快,特别是在算法的早期,但也存在着精度较低,易发散等缺点。若加速系数、最大速度等参数太大,粒子群可能错过最优解,算法不收敛;而在收敛的情况下,由于所有的粒子都向最优解的方向飞去,所以粒子趋向同一化(失去了多样性),使得后期收敛速度明显变慢,同时算法收敛到一定精度时,无法继续优化,因此很多学者都致力于提高PSO算法的性能。

这里给出基本粒子群算法的MATLAB主程序(改进的PSO由于涉及部分实验室项目,因此不作公布,望理解),代码程序包见文末附件。

% 清空环境变量
clc
clear
% 生成训练数据,数量100
x1 = linspace(1,100,100);
x2 = linspace(1,100,100);
X = [x1;x2];
Y = zeros( 100,100);
for row = 1 : 1 : 100    
    for col = 1 : 1 : 100        
        Y( row,col) = sin(10*x1(row))-x2(col).^3+(x1(row).^2) .* x2(col);
    end
end

% 生成检验数据,数量100
xt1 = linspace(1,100,100);
xt2 = linspace(1,100,100);
XT = [xt1;xt2];
Y2 = zeros( 100,100);
for row = 1 : 1 : 100
    for col = 1 : 1 : 100
        Y2( row,col) = sin(10*xt1(row))-xt2(col).^3+(xt1(row).^2) .* xt2(col); 
    end
end
% 对样本输入X输出Y作归一化处理,数据范围限制在[-1,1],归一化数据结构保存在ps
[Data_target,ps_output] = mapminmax(Y,-1,1);
[Data_input,ps_input] = mapminmax(X,-1,1);
% 对检验数据做归一化处理
Data_test = mapminmax('apply',XT,ps_input);

%节点个数
inputnum=size(Data_input,1);       % 输入层神经元个数 
outputnum=size(Data_target,1);     % 输出层神经元个数
hiddennum=10;
% 创建网络;
net1 = newff(Data_input,Data_target,hiddennum);
% net2 = newff(Data_input,Data_target,hiddennum);
% net3 = newff(Data_input,Data_target,hiddennum);
%节点总数 2*5 + 5 + 5 + 1 = 21 
numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;

%% 粒子群算法求权值和阈值
%粒子群算法参数设置
N = 20;
c1 = 2;
c2 = 2;
w = 0.6;
M = 100;
D = numsum;
x = zeros(1,D);
% 调用粒子群算法函数
[xm1,fv1,Pbest1] = NNPSO(x,hiddennum,net1,Data_input,Data_target,N,w,c1,c2,M,D);
% [xm2,fv2,Pbest2] = NNSAPSO(x,hiddennum,net2,Data_input,Data_target,N,w,c1,c2,M,D);
% [xm3,fv3,Pbest3] = NNCSAPSO(x,hiddennum,net3,Data_input,Data_target,N,w,c1,c2,M,D);

%% 把最优初始阀值权值赋予网络预测
% 用粒子群算法优化的BP网络进行值预测
w1_1=xm1(1:inputnum*hiddennum);
B1_1=xm1(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2_1=xm1(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2_1=xm1(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);

net1.iw{1,1}=reshape(w1_1,hiddennum,inputnum);
net1.lw{2,1}=reshape(w2_1,outputnum,hiddennum);
net1.b{1}=reshape(B1_1,hiddennum,1);
net1.b{2}=reshape(B2_1,outputnum,1);

% % 用模拟退火粒子群算法优化的BP网络进行值预测
% w1_2=xm2(1:inputnum*hiddennum);
% B1_2=xm2(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
% w2_2=xm2(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
% B2_2=xm2(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);
% 
% net2.iw{1,1}=reshape(w1_2,hiddennum,inputnum);
% net2.lw{2,1}=reshape(w2_2,outputnum,hiddennum);
% net2.b{1}=reshape(B1_2,hiddennum,1);
% net2.b{2}=reshape(B2_2,outputnum,1);

% 用混沌模拟退火粒子群算法优化的BP网络进行值预测
% w1_3=xm3(1:inputnum*hiddennum);
% B1_3=xm3(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
% w2_3=xm3(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
% B2_3=xm3(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);
% 
% net3.iw{1,1}=reshape(w1_3,hiddennum,inputnum);
% net3.lw{2,1}=reshape(w2_3,outputnum,hiddennum);
% net3.b{1}=reshape(B1_3,hiddennum,1);
% net3.b{2}=reshape(B2_3,outputnum,1);

%% BP网络训练
%粒子群网络进化参数
net1.trainParam.epochs=100;
net1.trainParam.lr=0.1;
net1.trainParam.goal=1e-3;
% 
% %模拟退火粒子群网络进化参数
% net2.trainParam.epochs=100;
% net2.trainParam.lr=0.1;
% net2.trainParam.goal=1e-6;

%混沌模拟退火粒子群网络进化参数
% net3.trainParam.epochs=100;
% net3.trainParam.lr=0.1;
% net3.trainParam.goal=1e-3;

% 训练网络
net1 = train(net1,Data_input,Data_target); % 粒子群
% net2 = train(net2,Data_input,Data_target); % 模拟退火粒子群
% net3 = train(net3,Data_input,Data_target); % 混沌模拟退火粒子群

%% 仿真测试
test_sim1 = sim(net1,Data_test); % 粒子群
% test_sim2 = sim(net2,Data_test); % 模拟退火粒子群
% test_sim3 = sim(net3,Data_test); % 混沌模拟退火粒子群

% 输出数据反归一化,Test_sim为测试数据通过神经网络的预测输出值
Test_sim1 = mapminmax('reverse',test_sim1,ps_output); % 粒子群
% Test_sim2 = mapminmax('reverse',test_sim2,ps_output); % 模拟退火粒子群
% Test_sim3 = mapminmax('reverse',test_sim3,ps_output); % 混沌模拟退火粒子群

%% 算法结果分析 
% figure(1)
% t = 1:M;
% plot(t,Pbest1,'b',t,Pbest2,'g',t,Pbest3,'r');
% title('算法收敛过程');
% xlabel('进化代数');
% ylabel('最小均方误差值(MSE值)');
% legend('基本粒子群算法','模拟退火粒子群算法','混沌模拟退火粒子群算法');
% 
% figure(2)
% mesh(xt1,xt2,Y2);
% title('函数实际图形');

%% 拟合图形对比输出

%基础粒子群对比输出
figure(3)
subplot(1,2,1)
mesh(xt1,xt2,Y2);
title('函数实际图形');
xlabel('X1取值');ylabel('X2取值');zlabel('非线性函数输出值');

subplot(1,2,2)
mesh(xt1,xt2,Test_sim1);
title('基础粒子群算法拟合图形');
xlabel('X1取值');ylabel('X2取值');zlabel('非线性函数输出值');

% % 模拟退火粒子群对比输出
% figure(4)
% subplot(1,2,1)
% mesh(xt1,xt2,Y2);
% title('函数实际图形');
% xlabel('X1取值');ylabel('X2取值');zlabel('非线性函数输出值');
% 
% subplot(1,2,2)
% mesh(xt1,xt2,Test_sim2);
% title('模拟退火粒子群算法拟合图形');
% xlabel('X1取值');ylabel('X2取值');zlabel('非线性函数输出值');

%%混沌模拟退火粒子群拟合图形单独输出
% figure(5)
% subplot(1,2,1)
% mesh(xt1,xt2,Y2);
% title('函数实际图形');
% xlabel('X1取值');ylabel('X2取值');zlabel('非线性函数输出值');
% 
% subplot(1,2,2)
% mesh(xt1,xt2,Test_sim3);
% title('混沌模拟退火粒子群算法拟合图形');
% xlabel('X轴');ylabel('Y轴');zlabel('Z轴');

2.2 模拟退火PSO算法(Simulated Annealing PSO algorithm, SAPSO)原理

模拟退火算法是一种基于蒙特卡洛[3]思想设计的用于近似求解最优化问题的著名方法。该算法的基本思想主要是通过模拟物理退火[4]过程实现搜索最优解。

从物理过程来说,模拟退火过程一般指物理固体降温、内能逐步减小,最终趋于最低能量状态的结晶过程。而这一过程中,温度的变化应该是缓慢的。固体温度被升高后,其内部粒子的状态为无序且非稳定,随着退火过程的持续物体的粒子状态则逐步趋于有序且最终达到稳态的平衡,而这一过程,则类似算法中粒子不断寻求最优解的过程。

模拟退火算法的特点是在搜索过程中具有概率突跳的能力[5],能够有效地避免搜索过程陷入局部最优解,退火过程中不但接受更优的解,而且还以一定概率 接受差的解,同时这种概率受到温度参数的控制,其大小随着温度的下降而减小。

在与粒子群算法结合的过程中,必须确定初始温度和退温方式,其公式如下:

公式3

2.3 混沌模拟退火PSO算法(Chaotic Simulated Annealing PSO algorithm, CSAPSO)原理

将混沌思想加入到PSO算法是利用混沌对与粒子速度更新相关的参数进行自适应调整[6],在产生混沌序列时,采用logistic模型:

公式4

其中, x i t x_i^t xit x i x_i xi在第 t t t步混沌演变后的值。 x i ∈ [ 0 , 1 ] , 1 ≤ u ≤ 4 x_i\in[0,1],1\le u\le4 xi[0,1],1u4 u = 4 u=4 u=4 x i ∉ 0.25 , 0.5 , 0.75 x_i\notin{0.25,0.5,0.75} xi/0.25,0.5,0.75时,系统表现出完全混沌特性。

本文混沌模拟退火粒子群算法由三部分组成:

采用混沌思想对粒子群参数惯性权值 w w w 和随机数 r a n d rand rand进行调整;
运用基本粒子群算法公式(1)、(2)引领粒子群的全局搜索方向;
运用模拟退火算法公式(3)引导粒子群的局部搜索方向。
算法流程图如图所示:

图3 CSAPSO算法流程图

3. 函数选择

拟合函数表达式:
公式5

训练集数据选择: ,等间隔取100个点; ,等间隔取100个点。
测试集数据选择: ,等间隔取100个点; ,等间隔取100个点。

4. 实验仿真

4.1 实验参数设置

表1 BP神经网络参数设置
表2 算法参数设置

4.2 智能算法函数拟合结果

图4 基础粒子群算法拟合结果与函数实际图形对比

图5 模拟退火粒子群算法拟合结果与函数实际图形对比
图6 混沌模拟退火粒子群算法拟合结果与函数实际图形对比
如图可知,基础粒子群算法和改进的粒子群算法在神经网络的非线性函数拟合中效果都很不错。

4.3 算法稳定性分析

如图,混沌模拟退火粒子群算法的全局最优值为4.7266,基本粒子群算法和模拟退火粒子群算法则全局最优值分别为5.7571、5.8775。

图7 三种算法粒子学习曲线对比

表3 三种算法均方误差最优值对比
4.4 神经网络超参数影响分析

仅调整BP网络训练目标误差,选定基础粒子群算法作为网络参数更新算法,观察网络拟合效果。

表4 BP神经网络参数设置

图8 基础粒子群算法拟合结果与函数实际图形对比(0.001误差率)

由图对比可知,当训练误差率设置值偏大时,拟合的精度会下降,反映出的拟合效果也会有所降低。
在以上实验基础上,仅调整BP网络隐层节点数,依然选定基础粒子群算法作为网络参数更新算法,观察网络拟合效果。

表5 BP神经网络参数设置

图9 基础粒子群算法拟合结果与函数实际图形对比(10个隐层节点数)
由图可知,增加隐层节点数目后,拟合效果反而下降了。因此,在神经网络模型优化中,并不是越多的层数越好,有可能层数越多反而拟合效果下降。要求在具体的实践中选择合适的神经元个数。

5. 总结与展望

本文对BP神经网络模型分析及其改进方法,基于基本粒子群算法,提出其改进算法,并将其应用于BP网络非线性函数拟合中,得到了效果不错的函数拟合结果。仿真结果验证了粒子群算法在神经网络改进中的有效性,同时验证了不同超参数设置对拟合效果的影响,为自己后期智能算法与深度学习算法的学习夯实了基础。

开源地址

本人小白,如果代码中有不妥之处,还望各路前辈批评指正。

参考文献

[1] Kennedy J, Eberhart RC. Particle swarm optimization [C]//Proceedings of the 1995 IEEE International Conference on Neural Networks.1995:1942-1948.
[2] TAO Ai . Summary of Particle Swarm Optimization.[J] College of Science .2005.
[3] XU Tian-dong, SUN Li-jun, GENG Yuan-jing, etc. Appliance on the Estimation of LAN Transportation Information based on Montel Carlo Method.[J]. Computer Engineering & Appliance, 2008(15):206-208,234.
[4] WEI Ping. Analysis & Research of Simulated Annealing Algorithm[J]. Equipment Manufacturing Technology,2008(7):1-3.
[5] GONG Chun, WANG Zheng-lin. Master of Optimization Calculation on MATLAB[M]. Publishing House of Electronics Indus-try,2012:491-505.
[6] OTTE,GREBOGIC,YORKEJA. Controlling chaos[J]. Physical Review Letters,1990,64(11):1196-1199.
[7] 尤晓东, 苏崇宇, 汪毓铎. BP 神经网络算法改进综述[J]. 民营科技, 2018, 4.

粒子群优化算法是一种新颖的仿生、群智能优化算法。该算法原理简单、需调整的参数少、收敛速度快而且易于实现,因此近年来粒子群算法引起了广大学者的关注。然而到目前为止粒子群算法的在理论分析和实践应用方面尚未成熟,仍有大量的问题需进一步研究。本文针对粒子群算法易出现“早熟”陷入局部极小值问题对标准粒子群算法进行改进并将改进的粒子群算法应用于BP神经网络中。本文的主要工作如下:本文首先介绍了粒子群算法的国内外的研究现状与发展概况,较系统地分析了粒子群优化算法的基本理论,总结常见的改进的粒子群优化算法。其次介绍了Hooke-Jeeves模式搜索法的算法分析、基本流程及应用领域。针对标准粒子群优化算法存在“早熟”问题,易陷入局部极小值的缺点,本文对标准粒子群算法进行改进。首先将原始定义的初始种群划分为两个相同的子种群,采用基于适应度支配的思想分别将每个子种群划分为两个子集,Pareto子集和N_Pareto子集;然后将两个子群中的适应度较优的两个Pareto子集合为新种群。Griewank和Rastrigin由于新种群的参数设置区别于标准粒子群算法的参数设置,新的粒子与标准种群中的粒子飞行轨迹不同,种群的探索范围扩大,从而使算法的全局搜索能力有所提高。 为平衡粒子群算法的全局寻优能力和局部寻优能力,提高粒子群算法的求解精度和效率,本文在新种群寻优过程中引入具有强收敛能力Hooke-Jeeves搜索法,提出了IMPSO算法。雅文网www.lunwendingzhi.com,并用IMPSO算法对标准基准测试函数进行实验,将得到的实验结果并与标准粒子群算法对基准函数的实验结果进行对比,仿真结果证明了该改进的粒子群算法的有效性。 最后本文研究改进的粒子群算法在BP神经网络中的应用。首先介绍人工神经网络的原理及基于BP算法的多层前馈神经网络,其次用IMPSO算法训练BP神经网络并给出训练流程图。 将IMPSO算法训练的BP神经网络分别应用于齿轮热处理中硬化层深的预测以及用于柴油机的缸盖与缸壁的故障诊断中,并将预测结果、诊断结果与BP神经网络、标准粒子群优化算法训练的BP神经网络的实验结果进行对比,实验结果证明了改进的粒子群算法训练BP网络具有更强的优化性能和学习能力。 英文简介: Particle swarm optimization algorithm is a novel bionic, swarm intelligence optimization algorithm. The algorithm principle is simple, less need to adjust the parameters and convergence speed is fast and easy to implement, so in recent years, particle swarm optimization (pso) to cause the attention of many scholars. So far, however, the particle swarm algorithm are not mature in theory analysis and practice applications, there are still a lot of problems need further research. Based on particle swarm algorithm is prone to "premature" into a local minimum value problem to improve the standard particle swarm algorithm and improved particle swarm optimization (pso) algorithm was applied to BP neural network. This paper's main work is as follows: at first, this paper introduces the particle swarm algorithm in the general situation of the research status and development at home and abroad, systematically analyzes the basic theory of particle swarm optimization algorithm, summarizes the common improved particle swarm optimization algorithm. Secondly introduces the analysis method of Hooke - Jeeves pattern search algorithm, the basic process and application fields. In view of the standard particle swarm optimization algorithm "precocious" problems, easy to fall into local minimum value, in this paper, the standard particle swarm algorithm was improved. First of all, the original definition of the initial population is divided into two identical sub populations, based on the fitness of thought respectively each child population is divided into two subsets, and Pareto subset N_Pareto subset; And then has a better fitness of two subgroups of two Pareto set for the new population. Griewank and Rastrigin because of the new population parameter setting differs from the standard particle swarm algorithm of the parameter is set, the new particles and particle trajectories in the different standard population, population expanding, which makes the algorithm's global search ability have improved. To balance the global search capability of the particle swarm algorithm and local optimization ability, and improve the precision and efficiency of particle swarm optimization (pso) algorithm, introduced in this article in the new population optimization process has a strong convergence ability to search method of Hooke - Jeeves, IMPSO algorithm is proposed. And standard benchmark test functions with IMPSO algorithm experiment, will receive the results with the standard particle swarm algorithm, comparing the experimental results of benchmark functions, the simulation results prove the validity of the improved particle swarm algorithm. At the end of the paper research the improved particle swarm algorithm in the application of the BP neural network. First this paper introduces the principle of artificial neural network and based on the multi-layer feed-forward neural network BP algorithm, secondly by IMPSO algorithm training the BP neural network and training flow chart is given. IMPSO algorithm training the BP neural network respectively used in the gear heat treatment hardening layer depth prediction and used for fault diagnosis of diesel engine cylinder head and cylinder wall, and the predicted results, the diagnostic results, the standard particle swarm optimization algorithm with BP neural network of training BP neural network, comparing the experimental results of the experimental results show that the improved particle swarm optimization (pso) training BP network has better optimization performance and learning ability.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值