RELU激活函数作用

卷积神经网络梯度消失,神经网络中梯度的概念 累乘中一个梯度小于1,那么不断累乘,这个值会越来越小,梯度衰减很大,迅速接近0。在神经网络中是离输出层近的参数,梯度越大,远的参数,梯度越接近0。根本原因是sigmoid函数的缺陷。方法:1、好的初始化方法,逐层预训练,后向传播微调。2、换激活函数,用relu,leaky——relu。靠的是使梯度靠近1或等于1,避免了在累乘过程中,结果迅速衰减。避免梯度消失和梯度爆炸的方案:使用新的激活函数Sigmoid函数和双曲正切函数都会导致梯度消失的问题。ReLU函数当x... 阅读详情

梯度消失现象:在某些神经网络中,从后向前看,前面层梯度越来越小,后面的层比前面的层学习速率高。
这里写图片描述
梯度消失原因:
这里写图片描述
sigmoid函数导数图像
这里写图片描述
导数最大为0.25<1
权重初始值通常使用一个高斯分布所以|w|<1,所以 wjσ′(zj)<0.25 ,根据链式法则计算梯度越来越小。由于层数的增加,多个项相乘,势必就会导致不稳定的情况。
sigmoid激活函数的缺点:
1.计算量大,反向传播求梯度误差时,求导涉及除法2.反向传播容易出现梯度消失
解决方法:
RELU函数 代替sigmoid函数
Alex在2012年提出的一种新的激活函数。该函数的提出很大程度的解决了BP算法在优化深层神经网络时的梯度耗散问题

优点:
∙ x>0 时,梯度恒为1,无梯度耗散问题,收敛快;
∙ 增大了网络的稀疏性。当x<0 时,该层的输出为0,训练完成后为0的神经元越多,稀疏性越大,提取出来的特征就约具有代表性,泛化能力越强。即得到同样的效果,真正起作用的神经元越少,网络的泛化性能越好
∙ 运算量很小,训练时间少;
缺点:
如果后层的某一个梯度特别大,导致W更新以后变得特别大,导致该层的输入<0,输出为0,这时该层就会‘die’,没有更新。当学习率比较大时可能会有40%的神经元都会在训练开始就‘die’,因此需要对学习率进行一个好的设置。
由优缺点可知max(0,x) 函数为一个双刃剑,既可以形成网络的稀疏性,也可能造成有很多永远处于‘die’的神经元,需要tradeoff

一次面试引发的问题:激活函数Relu,sigmoid ,tanh的角逐 记得之前去某东面试,面试官问我CNN的激活函数有哪些? 我说:Relu/sigmoid /tanh 问:有区别吗? 我心想我只用过relu,至于区别我想应该是高效吧。 问:为什? 我真没细想过,后来面试完啦赶紧去巴拉巴拉,整理啦以下资料,果然,做学问,不仅仅要知道how,更要知道why 整理笔记: 激活函数的性质 数据”经过一个神经网络时,经过卷积或池化等运算后,最终输出的一个 阅读详情

相关推荐

【AI大模型】激活函数:ReLU/GELU到底在模型里起什么作用

本文深入解析AI大模型中激活函数的核心作用,重点对比ReLU与GELU的差异及适用场景。激活函数为神经网络引入非线性能力,是大模型具备智能的关键。ReLU简单高效但存在神经元死亡问题,适合图像任务;GELU通过概率性平滑加权保留负数特征,避免神经元死亡,训练更稳定,成为GPT等大模型的标准选择。文章包含PyTorch实操代码,直观展示两者输出曲线、梯度分布和训练效果的差异,验证GELU在文本任务中的优势。最终指出GELU因其完整保留语义特征、训练稳定等优势,成为现代大模型的标配激活函数。

unber的博客 19

深度学习 --- 优化入门三(梯度消失和激活函数ReLU)

前两篇的优化主要是针对梯度的存在的问题,如鞍点,局部最优,梯度悬崖这些问题的优化,本节将详细探讨梯度消失问题,梯度消失问题在BP的网络里详细的介绍过(兴趣有请的查看我的这篇文章),然后主要精力介绍RuLU激活函数,本篇还是根据国外的文章进行翻译,然后再此基础上补充,这样使大家更容易理解,好,那就开始了: 分布,该死的分布,还有统计学 不同于之前的机器学习方法,神经网络并不依赖关于输入数据的任何...

进击的菜鸟 1万+

激活函数总结(一):ReLU及其变体

本文介绍了一些常用的激活函数,包括:Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、 Swish等激活函数及其在当前激活函数众多的情况下使用的环境。总体而言:ReLU激活函数还是最常用的激活函数。

走在深度学习前沿的小宋 3284

relu函数是否存在梯度消失问题以及relu函数的死亡节点问题

relu函数是否存在梯度消失问题以及relu函数的死亡节点问题 存在,在小于的时候,激活函数梯度为零,梯度消失,神经元不更新,变成了死亡节点。 出现这个原因可能是因为学习率太大,导致w更新巨大,使得输入数据在经过这个神经元的时候,输出值小于0,从而经过激活函数的时候为0,从此不再更新。所以relu为激活函数,学习率不能太大 转载于:https://www.cnblogs.com/lzida922...

weixin_30414305的博客 1656

Android GNSS 模块分析(三)JNI 层

Android GNSS;定位服务;GPS;NMEA协议;LocationManagerService;导航;

Yang_Mao_Shan的博客 5155

Windows环境下pcl点云库 安装配置全流程(精简、有效)

本文为Windows配置点云库pcl步骤,具体是win10、visual studio 2017、pcl1.11.1。

zaibeijixing的专栏 1万+

relu函数的作用

relu函数的作用

weixin_46516242的博客 6808

别再手动算考勤了!教你用Python+企业微信API自动生成月度报表

本文介绍如何利用Python和企业微信API构建自动化考勤分析系统,实现从数据获取到可视化报表生成的全流程自动化。通过企业微信打卡接口获取数据,使用Pandas进行高效清洗和分析,并生成Excel和HTML格式的报表,大幅提升考勤统计效率。系统支持智能判定考勤状态,如迟到、早退等,并可通过定时任务实现月度自动化运行。

weixin_27875131的博客 287

深度学习中梯度消失和梯度爆炸的根本原因及其缓解方法

一、梯度消失和爆炸的根本原因 首先解释一下什么是梯度消失和梯度爆炸, 梯度消失:梯度趋近于零,网络权重无法更新或更新的很微小,网络训练再久也不会有效果; 梯度爆炸:梯度呈指数级增长,变的非常大,然后导致网络权重的大幅更新,使网络变得不稳定。 其实不管是梯度消失还是梯度爆炸本质上都是由于——深度神经网络的反向传播造成的。 可以通过两个角度去解释:一是在深层网络中,二是采用的激活函数导致的。 1. 深层网络角度 我们先来回顾一下神经网络反向传播的机理: 简单的三层神经网络 先看其中某一层的反算机制,上图中红色线

Oliver_jiang的博客 3万+

C#与西门子PLC S7-1500 S7协议PLC读写数据

/获取对应长度的字符串。//将val字符串转换为字符数组。//String写入。//String读取。//PLC类型 IP地址 机架号 槽号。1.类库使用S7netplus。

softshow1026的博客 5576

将Keil中的变量数组导出

首先,写好导出数据的函数。

小柚子的博客 1951

通俗理解激活函数作用和常见激活函数总结:sigmoid、tanh、relu、Leaky-relu、P-relu、R-Relu、elu

激活函数的作用 可以想象,如果没有激活函数,下一层的输入总是上一层的输出,无论多少层网络,都是线性函数,线性函数的逼近能力是非常有限的,无法拟合现实中这些没有规律的非线性复杂函数。举个例子: 个人理解为把有规律线性函数用激活函数扭曲,层数越深扭曲次数越多,经过深层网络的扭曲之后,鬼知道是个什么函数,剩下的交给反向传播自己训练去把。 各种激活函数 1.Sigmoid激活函数: 2.tan...

weixin_43167121的博客 8120

Spring AI Alibaba实战训练营-20 基于注解驱动的MCP快速开发入门指南

本文详细讲解如何使用SpringAiAlibaba快速开发基于注解驱动的MCP应用。文章详细介绍了MCP协议并且重点介绍了Spring AI通过注解驱动的开发方式简化MCP服务开发。具体包括服务端和客户端的注解使用、城市最新时间查询MCP项目结构概览(服务端和客户端模块)以及环境配置要求。

program哲学 294

深度学习——ReLU激活函数的用法和作用

【代码】ReLU激活函数的用法和作用。

XDXDXDXDX111的博客 6382

Android开发工程师(IOT)面试指南与参考答案

【摘要】绿联科技招聘Android开发工程师(IOT方向),要求5年以上Android开发经验,精通Kotlin/Java,熟悉IOT设备交互及跨平台开发。岗位职责包括客户端开发维护、技术调研及性能优化等。核心考察点包括:Kotlin协程在IOT低功耗场景的应用、多协议设备连接层设计、音视频性能优化及离线架构实现。重点技术涉及蓝牙Mesh群控、BLE功耗优化及ReactNative混合开发。需具备GooglePlay合规经验,熟悉Android13+权限管理,并能提供量化性能优化案例。

郑伟强dev的专栏 719

vLLM专题(七)-支持的模型列表

vLLM支持跨多种任务的生成式和池化模型。如果一个模型支持多个任务,您可以通过–task参数来设置任务。对于每个任务,我们列出了已在vLLM中实现的模型架构。每个架构旁边,我们列出了一些使用该架构的流行模型。

1257

relu激活函数在神经网络中到底起到了什么作用?

可以看出,图像的纹理形状细节等特征没有发生变化,只是感觉暗了一些,这就是rule所带来的影响,从数学的角度也可以很好的解释,最基本的rule函数其实就是if x>0 : output =x;else: x=0;神经网络中激活函数的最直接目的是给网络提供非线性,如果没有激活函数,那么网络的每一层计算都将保持着上一层的线性结果,这样重复下去永远都是线性组合。左边的是conv2d后的结果,右侧为经过relu层后的结果。第一层卷积后的特征(浅层的卷积提取的往往都是一些表面的特征,例如颜色,形状等一些基本的特征)

qq_40962125的博客 3683

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ReLU激活函数在卷积神经网络中的作用

ReLU(Rectified Linear Unit)激活函数的公式非常简单:如果 ( x ) 是正数(大于0),那么输出就是 ( x ) 本身,就像亮色的小图片保持不变一样.如果 ( x ) 是负数(小于0),那么输出就是0,就像把暗色的小图片调成黑色一样.ReLU激活函数就像是卷积神经网络中的一个“魔法调光器”,它通过简单的规则引入非线性,提高计算效率,并缓解梯度消失问题,帮助网络更好地学习和理解图像。

weixin_41544125的博客 1091

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

激活函数在神经网络中的作用及ReLU与Sigmoid的优缺点比较

激活函数是神经网络中的关键组件,它不仅使得网络能够学习复杂的非线性关系,同时对模型训练过程中的梯度传播产生深远影响。Sigmoid适合于输出概率和简单网络,但容易出现梯度消失和非零均值问题;ReLU则以其计算高效和良好的梯度传播性能,在深层网络中被广泛应用,但需要注意“死神经元”现象。在实际应用中,根据任务需求和网络架构的特点,合理选择甚至结合多种激活函数,是构建高效神经网络的重要策略。希望这篇博客能为你在模型设计与优化中提供有益的参考与思路!

gs80140的专栏 1740

激活函数(sigmoid、Tanh、ReLu、softmax、softmin、LogSoftma)公式,作用,使用场景和python代码(包含示例)详解

Softmin 激活函数是 Softmax 激活函数的一种变体,它同样将一组实数转换为概率分布,不过更倾向于突出较小的值。激活函数是一些非线性、可微分的函数。LogSoftmax 激活函数是对 Softmax 函数的输出取自然对数。输入值小于等于 0 时,输出 0。输出均值接近 0,有助于缓解梯度下降时的“偏移”问题。与负对数似然损失(NLLLoss)结合时,效率更高。对输入进行简单截断,将负值置为 0,正值保持不变。除以这个和,得到的结果都在0到1之间,且。将任意实数映射到 (0,1) 区间内。

2301_76901778的博客 3538

使用ReLU作为隐藏层的激活函数和在最后一层使用线性激活函数的作用

LSTM模型中使用ReLU作为隐藏层的激活函数和在最后一层使用线性激活函数,这两种做法有着不同的目的和作用: ReLU激活函数在隐藏层: 目的:ReLU(Rectified Linear Unit)激活函数的主要目的是引入非线性到神经网络中。在深度学习模型中,非线性是必要的,因为它帮助网络学习和表示复杂的数据模式。 工作原理:ReLU函数的公式是f(x) = max(0, x)。这意味着,...

辛宣的博客 2531

深入理解激活函数--原理、推导与主流激活函数演进Day 01: 激活函数在前向传递、反向传播过程中的作用,sigmoid、ReLU、ELU

本文从神经网络最基础的前向传递与反向传播过程出发,通过简单的神经网络实例,详细推导并阐释了激活函数在其中的核心作用与必要性。文章系统回顾了激活函数的发展历程,逐一深入剖析了 Sigmoid、ReLU、ELU、GELU 、Swish 等多种主流激活函数的设计思想、数学特性、优缺点及其在训练中带来的影响。通过对比分析,本文梳理了激活函数从解决梯度消失、改善稀疏性到追求平滑非单调性的演进脉络,同时也为在不同场景下如何选择激活函数提供了理论依据和实践见解。

2503_94730577的博客 1294

激活函数nn.ReLU(inplace=True)中inplace的作用

nn.ReLU(inplace=True) 参数inplace=True: inplace为True,将计算得到的值直接覆盖之前的值 inplace:can optionally do the operation in-place. Default: False 注: 产生的计算结果不会有影响。利用in-place计算可以节省内(显)存,同时还可以省去反复申请和释放内存的时间。但是会对原变量覆盖,只要不带来错误就用。 例如:x = x+1 即对原值x进行+1操作后得到的值,直接赋值给x,而不是如下找

Drug discovery 2万+

Sigmoid,tanh,Relu,Leaky ReLu,ELU,GeLu 激活函数理解

为什么需要激活函数? Sigmoid tanh Relu Leaky Relu Rectifier Nonlinearities Improve Neural Network Acoustic Models Elu FAST AND ACCURATE DEEP NETWORK LEARNING BY EXPONENTIAL LINEAR UNITS Gelu GAUSSIAN ERROR LINEAR UNITS (GELUS) 参考文献 添加链接描述 添加链接描述 ......

BGoodHabit的博客 9957

常见问题1-为什么神经网络中经常在Conv层后添加ReLU作为激活函数

例如,一个网络含有三个隐藏层,梯度消失问题发生时,靠近输出层的hidden layer 3的权值更新相对正常,但是靠近输入层的hidden layer1的权值更新会变得很慢,导致靠近输入层的隐藏层权值几乎不变,仍接近于初始化的权值。我们知道,如果不使用激活函数无论你神经网络有多少层,输出都是输入的线性组合,这相当于最原始的感知机,这种情况下网络的逼近程度就相当有限,因此我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。

silencekp的博客 1795
上一篇: 指针和数值转换知识点
下一篇: lintcode二叉查找树升序输出(中序遍历)
有多少个小土豆
博客等级 码龄10年 235粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值