人工智能神经网络:200行代码手写了一个全连接神经网络(NN),基于FP和BP算法,单条数据计算更新梯度,速度比较慢,计划改为批量计算,代码详细注释

AI认证实操指南:如何用真实项目能力替代概念考试 AI认证不是知识测验,而是工程能力的具象化验证。从机器学习基础原理出发,核心在于能否驾驭真实数据清洗、模型训练调优与端到端部署落地——这直接决定你能否将算法转化为产线可用的服务。当前行业高度关注‘AI工程化’与‘MLOps实战’能力,尤其强调TensorRT模型优化、ONNX跨框架部署、Kubernetes服务编排等硬技能。真正被企业认可的证书,必须嵌入工业级数据集、完整CI/CD流程和业务指标对齐环节。本文聚焦AI认证的实操价值解构,帮你避开纯理论刷题陷阱,直击模型压缩、边缘部署、故障排查等高频工程痛点。 阅读详情

1.算法原理就是FP和BP算法,采用的梯度下降更新梯度。

2.算法的loss函数还是交叉熵函数,也是常用的分类loss函数。

3.训练数据集是使用的mnist数据集28*28的手写数字灰度图片,用csv文件保存的结构数据,格式如下,第一个列是label,后面784个列是每个像素的值。

4.目前没有写算法说明,回头再更吧,算法有详细的注释。

import numpy as np

# 基于交叉熵的loss函数计算和梯度
class CrossEntropy():

    # 正向计算
    def forward(self, input, y):
        '''
        正向计算成本函数的残熵结果值,注意input和y都是概率值在[0, 1]之间,
        :param input: 预测的分类结果,是个向量,存放的是各分类结果的概率,
                       例如:[0.5, 0.8, 1, 0.3, 0.1]
        :param y: 实际分类结果,例如:[0,1,0,0,0]
        :return: 返回一条训练数据的交叉熵成本值
        '''
        # 公式 ce = -sum(y*log(p) + (1 - y)*log(1 - p))
        # 为了规避是0 为了规避log出现负数,先计算log然后代入公式
        m = [np.log(x) if x >0 else 0  for x in input]
        n = [np.log(1 - x) if 1 - x > 0 else 0 for x in input]
        result = - np.sum(y * m + (1 - y) * n)
        return result

        pass


    def backward(self, input, y):
        '''
        # 反向计算损失函数的梯度
        :param input: 预测的分类结果,是个向量,存放的是各分类结果的概率,
                       例如:[0.5, 0.8, 1, 0.3, 0.1]
        :param y: 实际分类结果,例如:[0,1,0,0,0]
        :return: 返回的是成本函数计算出来的梯度值
        '''
        # input是神经网络的分类结果
        return (input - y)/(input * (1 - y))
        pass

    pass

# sigmoid激活函数和梯度计算
class Sigmoid():

    def forward(self, input):
        '''
        正向计算求值
        :param input: 输入是个向量,一次计算多个输入
        :return:
        '''
        return 1.0 / (1.0 + np.exp(-input))
        pass
    # 基于sigmoid函数的梯度公式:g'(x) = g(x)*(1 - g(x)),g是sigmoid函数g(x) = 1/(1+e^(-x))
    def backward(self, output):
        '''
        反向计算求梯度
        :param output: 是正向计算的结果,output其实是forward的计算结果
        :return:
        '''
        return output * (1 - output)
        pass
    pass

# 定义了神经网络层的正向计算和梯度计算
class Dense():
    def __init__(self, inputSize=0, outputSize=0, activator=Sigmoid()):
        '''
        对于一个神经网络层来说,需要知道输入的神经元个数和输出的神经元个数
        :param inputSize: 输入神经元的个数
        :param outputSize: 输出神经元的个数
        :param activator:  当前层的激活函数
        :return:
        '''
        self.inputSize = inputSize
        self.outputSize = outputSize
        self.activator = activator

        # 定义和初始化权重矩阵 基于公式 f(Wx) = W.dot(x) + b W是系数矩阵 x是输入的神经元,
        #  b是截距项 x和b都是列向量
        self.W = np.random.uniform(-0.1, 0.1, (outputSize, inputSize))
        # 定义截距项数组,初始化为全0
        self.b = np.zeros((outputSize,))
        # 定义输出数组
        self.output = np.zeros((outputSize,))
        pass

    def forward(self, inputArray):
        '''
        定义当前层的正向计算
        :param inputArray: 输入是一个列向量
        :return:
        '''
        # 当前层的神经元
        self.input = inputArray

        # 基于公式 f(Wx) = W.dot(x) + b 然后使用激活 h(f(Wx)) = h(W.dot(x) + b)
        # 计算出的是下一个层的神经元
        self.output = self.activator.forward(self.W.dot(self.input) + self.b)
        # 输出其实就是下一层的输入
        return self.output
        pass

    def backward(self, inputDelta):
        '''
        反向计算梯度
        :param inputDelta:是反向传播时的上一层,其实是当前层的后一层的delta值
        :return:
        '''
        # 计算当前层的delta,detla其实计算的是神经元的梯度
        self.delta = self.W.T.dot(inputDelta) * self.activator.backward(self.input)
        # 通过神经元的梯度计算出当前层权重的梯度
        # 梯度计算注意:inputDelta 和 self.input 是两个向量,
        # 例如假设:inputDelta=[1,2,3,4] input=[1,3,2,4]
        # inputDelta通过nputDelta[:,np.newaxis]后,扩展了列变为二维:[[1],[2],[3],[4]]
        # input通过self.input[np.newaxis,:]后,扩展了行变为:[[1,3,2,4]]
        # 这样就是一个4*1 的矩阵和 一个1*4的矩阵点积运算,得到一个4*4的矩阵
        self.WGrad = np.dot(inputDelta[:,np.newaxis], self.input[np.newaxis,:])
        # 因为b值是做加法,所以他的梯度就是后一次计算的梯度Delta
        self.bGrad = inputDelta
        pass

    def update(self, learningRate):
        '''
        根据学习速率和已经获得的梯度,更新权重系数和截距项的梯度
        :param learningRate:
        :return:
        '''
        self.W -= self.WGrad * learningRate
        self.b -= self.bGrad * learningRate
        pass

    def verbose(self, verbose=0):
        '''
        :param verbose: 0不显示梯度变化信息, 1显示
        :return:
        '''
        if verbose:
            print("Grandient update now:")
            print("W:", self.W)
            print("b:", self.b)
        pass
    pass

class Model(object):
    def __init__(self):
        self.layers = []  # 保存层对象,一个三层网络,只需要来个层对象
        self.loss = None
        pass

    def predict(self, input):
        '''
        正向计算,预测结果
        :param input: 是一个向量
        :return:
        '''
        output = input
        for layer in self.layers:
            output = layer.forward(output)
            pass
        return output
        pass

    def add(self, layer):
        '''
        向神经网络添加层
        :return:
        '''
        self.layers.append(layer)
        pass

    def compile(self):
        '''
        构建神经网络模型,初始化模型相关的参数
        :return:
        '''
        pass

    def optimizor(self, y, loss=None, learningRate=0.005):
        '''
        优化器,计算梯度和更新梯度
        :return:
        '''
        # 当使用交叉熵作为损失函数的时候
        if loss == None or loss == 'CrossEntropy':
            # 最后的delta计算其实是基于交叉熵成本函数公式求导的梯度
            # ce = -sum(y*log(p) + (1 - y)*log(1 - p))
            # self.layers[-1].activator.backward(self.layers[-1].output)得到的是激活函数的梯度
            # 对于sigmoid其实就是output*(1 - output)
            delta = self.layers[-1].activator.backward(self.layers[-1].output) * \
                    (self.layers[-1].output - y) / (self.layers[-1].output * (1 - self.layers[-1].output))
            # 计算其他层的delta和梯度
            for layer in self.layers[:: -1]:
                layer.backward(delta)
                delta = layer.delta
                pass
        # 梯度更新,每一条数据都要产生梯度影响
        for layer in self.layers:
            # print(layer.W)
            layer.update(learningRate)
            pass
        pass

    def trainOneSample(self, x, y, loss=None, learningRate=0.005):
        '''
        注意本例子使用的每次计算一条样本
        :param x: 一条样本数据
        :param y: 样本的实际结果
        :return:
        '''
        # 正向计算得到结果
        output = self.predict(x)
        self.optimizor(y, loss, learningRate)
        pass



    def fit(self, X, Y, loss=None, epochs=1000, learningRate=0.1):
        '''
        训练模型
        :param X: 样本
        :param Y: 标签
        :param loss: 成本函数
        :return:
        '''
        for i in range(epochs):
            # epochs
            print("epochs:", i)
            for x, y in zip(X, Y):
                self.trainOneSample(x, y, learningRate=0.01)
                pass
            pass
        pass
    pass

if __name__ == "__main__":

    # 定义模型
    model = Model()
    # 一个三层的网络input->hidden->output,只需要两个计算层
    model.add(Dense(inputSize=784, outputSize=64, activator=Sigmoid()))
    model.add(Dense(inputSize=64, outputSize=10, activator=Sigmoid()))

    # 加载数据
    # 5.1 读取训练数据,训练的是处理好的mnist数据集,就是手写数字图片
    trainData = np.loadtxt('digits_training.csv', delimiter=',', skiprows=1)
    # 将样本数据X和y
    xTrain = trainData[:, 1:]
    yTrain = trainData[:, 0]

    # 正则化
    # xTrain = (xTrain - np.mean(xTrain, axis=0))/np.std(xTrain, axis=0)
    xTrain = xTrain / np.max(xTrain)
    # 优化出10组w,第一组w识别是0,还是不是0,第二组w识别是1还是不是1
    # 处理yTrain,变为二维数组oneHot编码
    y = np.zeros(shape=(len(yTrain), 10))
    # print(y)
    for m, row in zip(yTrain, y):
        row[int(m)] = 1
        pass
    # print(xTrain)
    # print(y)
    model.fit(xTrain, y, epochs=100)
    print("预测和原始值:")
    print("原始结果:", np.argmax(y[0]), '预测结果:', np.argmax(model.predict(xTrain[0])), '预测值:',model.predict(xTrain[0]))
    print("原始结果:", np.argmax(y[1]), '预测结果:', np.argmax(model.predict(xTrain[1])), '预测值:',model.predict(xTrain[1]))
    print("原始结果:", np.argmax(y[2]), '预测结果:', np.argmax(model.predict(xTrain[2])), '预测值:',model.predict(xTrain[2]))
    pass

5.训练100轮的预测结果

人工智能神经网络:200行代码手写了一个全连接神经网络(NN),基于单条数据计算更新梯度,速度比较慢,计划改为批量计算,代码详细注释

人工智能入门系列之一: 鸢尾花(Iris)多分类的神经网络详解及代码实现 这是最好的时代,我们一起来打造属于自动驾驶汽车上路、无人机飞天、智能机器人管工厂的AI未来 人工智能领域分化为两个阵营:其一是规则式(rule-based)方法,在人工智能早期占主峰;其二是神经网络(neural network)方法,后起之秀。随着硬件水平的提高,算力的指数式增长;人工智能的重心已经从规则式的专家时代转移到神经网络的数据时代。 “神经网络”不选择把人脑熟稔的逻辑规则传授给计算机... 阅读详情

相关推荐

一个人工智能神经网络BrainNet源代码及完整的示例教程(并实现一个简单的手写文字检测与识别系统)

一个人工智能神经网络BrainNet源代码及完整的示例教程(并实现一个简单的手写文字检测与识别系统)

C语言实现神经网络

这个例子中,我们实现了一个简单的单层神经网络,它只有一个输入节点和一个输出节点,权重向量有3个元素(对应于输入节点和输出节点之间的3个连接),偏置为0。我们使用sigmoid作为激活函数,使用梯度下降法进行训练。在训练过程中,我们根据期望的输出和实际的输出计算误差,然后根据误差和梯度更新权重和偏置。最后,我们使用训练好的神经网络来计算输入为[1, 1]时的输出,输出结果为0.99。神经网络是一种深度学习的结构,它可以模拟人脑的神经元来进行复杂的学习和预测。下面是一个简单的使用C语言实现神经网络的例子。

weixin_62562497的博客 2489

用STC8单片机解码EV1527遥控信号:从波形分析到C代码实现(附完整库)

本文详细介绍了如何使用STC8单片机解码EV1527遥控信号,从波形分析到C代码实现的完整过程。内容包括EV1527协议解析、硬件搭建、信号捕获技巧、解码算法实现及优化策略,并附有完整库代码,帮助开发者快速实现智能家居设备的无线控制。

weixin_34093995的博客 295

探索精简神经网络的力量:Tinn,一个仅200行代码的C语言库

![Tinn Logo](img/logo.PNG) 在追求效率和轻量化的时代,我们很高兴向您介绍Tinn(Tiny Neural Network),一个基于C99标准,只有200行代码且无依赖的神经网络库。这个小而强大的工具由C99或C++98编译器支持,不仅适用于桌面平台,还能在嵌入式系统中大显身手。 ## 项目介绍 Tinn的设计理念是简洁与实用。它提供了一个简单的Sigmoid激活函...

gitblog_00099的博客 580

告别Keil4!手把手教你用Keil C51 V9.61编译51单片机代码(附最新激活方法)

本文详细介绍了Keil C51 V9.61在51单片机开发中的全栈升级指南,包括编译速度提升、调试器性能优化和现代开发支持等核心优势。通过智能安装方案、项目迁移实战和新特性深度应用,帮助开发者告别Keil4,大幅提升开发效率。附有最新激活方法和实用技巧,适用于嵌入式开发工程师。

weixin_26886855的博客 420

VS2015+C++实战:手把手教你用海康MVS里的Demo搞定多相机同步采图与保存

本文详细解析了在VS2015+C++环境下,利用海康威视MVS工业相机SDK实现多相机同步采图与保存的全流程。从环境准备、SDK选择到多相机初始化、同步采图方案,再到异常处理与性能优化,提供了实战技巧和代码示例,帮助开发者快速掌握工业相机二次开发的核心技术。

weixin_29170327的博客 281

【智能计算系统】神经网络基础&代码实现

神经网络中常见的组成部分有:全连接层,激活函数,Softmax层。

Peter1146717850的博客 972

【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例(2023/12/1更新)

ShaderGraph是Unity中的一个可视化工具,用于创建和编辑图形着色器。其意义在于简化编写复杂着色器的过程,减少对具体编程语言的依赖,使艺术家和设计师可以更方便地创建各种美术效果。使用ShaderGraph可以通过图形界面设置着色器属性,包括颜色、纹理、光照等,并在视窗预览中即时显示结果,从而快速迭代和调整着色器。使用ShaderGraph需要先安装Unity 2018.1或以上版本,并添加ShaderGraph插件。打开ShaderGraph面板后,可以通过拖放节点并连接它们来创建着色器。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4万+

神经网络代码注意点

用python写AI代码需要注意的坑

说文科技,做有态度的研究。 737

30天入门Python(办公篇)——第34天:pandas - 数据处理与分析利器

摘要 本文介绍了Python数据分析库pandas的核心功能,包括数据结构和基本操作。主要内容涵盖:1) Series和DataFrame两种核心数据结构的创建与使用;2) 多种文件格式的读写方法;3) 数据查看、筛选和清洗技巧;4) 基础统计分析功能;5) 数据透视表和交叉表制作;6) 数据排序与合并等变换操作。文章通过大量代码示例演示了pandas在数据处理各环节的应用,适合作为pandas入门的实践指南,帮助读者快速掌握这一强大工具的基本使用方法。

weixin_42636075的博客 303

excel 如何自动调整行间距 vba

EXCEL是一个非常使用的软件,虽然我们平时仅使用他做一些报表,仅此而已;我在工作中,由于很懒,不愿意做考试重复的工作,就想着使用vba的宏来完成重复的工作,这样就能省出一部分的时间来了。本人不喜欢在博客里面写以下教程类的东西,我的理念是将工作中的痛点的解决办法分享出来,以解决问题为主。

sixtome 1316

深度学习笔记(三)——NN网络基础概念(神经元模型,梯度下降,反向传播,张量处理)

简要介绍了NN网络的相关知识,构建流程,训练基础概念,并且使用tf2搭建了相关的基础程序用作示例。

拨雪寻春,烧灯续昼 2923

【乐企文件生成工程】乐企文件生成支持所有特定要素类型发票

【代码】【乐企文件】乐企文件生成最新更新!!!

九七的博客 850

神经网络七十年:从生物启发到统计学习的认知突围史

神经网络本质上是一种函数逼近工具,其核心原理是通过多层非线性变换组合,实现对复杂映射关系的可微分建模。这一技术的价值不仅在于拟合能力,更在于它将高维非线性问题转化为可优化、可扩展、可工程化的梯度驱动系统。从早期McCulloch-Pitts神经元的逻辑开关抽象,到反向传播赋予多层结构可训练性,再到GPU与大数据触发的端到端深度学习范式,每一次跃迁都围绕‘如何有效表达非线性’与‘如何稳定优化深层结构’两大关键挑战展开。今天,它已广泛应用于计算机视觉、自然语言处理、科学计算等场景,成为现代人工智能基础设施的底层

chuange6363的博客 391

论文必备 - YOLOv13热力图可视化,支持指定模型,指定显示层,设置置信度,以及10种可视化实现方式

本文带来的是YOLOv13热力图可视化功能,支持,以及。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。

Limiiiing的博客 488

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

PyTorch从零手搭MNIST神经网络:前向传播与反向传播实操指南

神经网络是深度学习的基石,其核心在于前向传播实现特征变换、反向传播完成梯度更新。理解这一原理不仅关乎数学推导,更决定模型能否稳定收敛、可调试、可迁移。PyTorch原生API通过显式张量操作,让前向传播路径清晰可见,使反向传播过程可监控、可裁剪、可诊断——这正是工业级模型开发的关键能力。本文以MNIST为基线任务,聚焦梯度检查、损失曲线诊断、过拟合识别等高频工程问题,提供200行内可复现的完整训练闭环,帮助开发者从‘能跑通’迈向‘懂为何跑通’。

weixin_30315435的博客 431

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Transformer 大模型架构深度解析(2)RNN 循环神经网络模型在 NLP 中的应用

值得注意的是,Sequence Model 的 “历史记忆” 和 Hopfield Network 的 “联系记忆” 有本质的区别,“联想记忆” 并不适用于处理序列数据,而 “历史记忆” 的目标是发现序列数据中的模式和依赖关系,从而进行预测、分类,甚至生成新的序列。如下图所示,RNN 和 FFN 结构的主要区别就是 RNN 引入了一个循环结构,RNN 在每个时间步(t)处理一个序列元素时,不仅会接收当前的输入,还会接收来自上一个时间步(t-1)的隐藏状态(Hidden State)。

烟云的计算 1305

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TensorFlow与人工智能的基本术语和概念入门

让我问一个简单的问题:什么是无监督的机器学习算法?您可能会问这与AI有什么关系。您可能还会问一个算法是什么,无监督的意思,甚至是什么机器学习。这发生在每一个初学者的AI域名。人眼花缭乱不同的条款之间,然后将它们混合在一起,改变的意思了技术。我们来看看关键AI的概念:机器学习(ML),深度学习(DL)和神经网络(NN)。   了解ML,DL和NN ML和DL是部分的与AI不同。在以下图会给你更...

小怪兽鲜乐园 399

matlab人工神经网络代码,人工神经网络 matlab 源程序代码

人工神经网络 matlab 源程序代码.txt爱一个人很难,恨一个人更难,又爱又恨的人最难。爱情永远不可能是天平,想在爱情里幸福就要舍得伤心!有些烦恼是我们凭空虚构的,而我们却把它当成真实去承受。人工神经网络 matlab 源程序代码【转】%产生指定类别的样本点,并在图中绘出X = [0 1; 0 1]; % 限制类中心的范围clusters = 5; % 指定类别数目points = 10; %...

weixin_33270404的博客 1461

[Python人工智能] 一.神经网络入门及theano基础代码讲解

本篇文章主要介绍讲述部署阿里云服务器Django网站环境,并通过IP地址访问网页的过程。写代码过程中往往第一步需要解决的就是配置开发环境,对于新手来说,这是非常头疼的事情,而当配置好之后或者对于老手来说,我们才能去实现理想的功能。基础性文章,希望对您有所帮助,同时文章中存在错误或不足之处,还请海涵~同时推荐前面作者另外三个Python系列文章。从2014年开始,作者主要写了三个Python系列文章...

杨秀璋的专栏 1万+

BP神经网络的Matlab实现——人工智能算法

这几天在各大媒体上接触到了人工智能机器学习,觉得很有意思,于是开始入门最简单的机器算法——神经网络训练算法(Neural Network Training);以前一直觉得机器学习很高深,到处是超高等数学、线性代数、数理统计。入坑发现确实是这样!但是呢由项目实例驱动的学习比起为考试不挂科为目的的学习更为高效、实用!在遗传算法、神经网络算法的学习入门之后觉得数学只要用心看没问题的(即使是蒙特卡洛和马尔

善水的博客 19万+

机器学习系列2 BP神经网络+代码实现

神经网络简单的说,就是用一种层次化的方式将一堆简单的函数在顶层堆叠在一起,形成一个复杂的非线性函数,以此表达输入与输出之间的关系。 本文结构:               1.介绍构成神经网络的基本单元:神经元               2.介绍三层神经网络的实现过程:前向传播、损失函数的计算、反向传播、梯度下降算法,并使用python分步实现   一、神经网络的基本单元:神经元  ...

zhengmingzhang的博客 4万+

AI从入门到放弃:BP神经网络算法推导及代码实现笔记

作者 | @Aloys (腾讯员工,后台工程师)本文授权转自腾讯的知乎专栏▌一. 前言:作为AI入门小白,参考了一些文章,想记点笔记加深印象,发出来是给有需求的童鞋学习共...

优快云人工智能头条 1万+

【人工智能】一文为你解析神经网络(附实例、公式)

原文标题:Introduction To Neural Networks作者:Ben Gorman翻译:申利彬校对:和中华本文长度为4000字,建议阅读12分钟本文通过建立一个识别“阶梯”模式的网络模型,带你从全方位了解神经网络。人工神经网络风靡一时,人们不禁要问,这个朗朗上口的名字是否在模型自身的营销和应用中起到了一定作用。据我所知,很多商业经理会说他们的产品使用了人工神经网络和深度学习。显然他

产业智能官 6036

我的人工智能之旅——神经网络

神经元,neuron 神经网络,Neural Networks 激活函数,activation function 权重,weight 输入层,input layer 输出层,output layer 隐藏层,hidden layer 向前传播,forward propagation 人工神经网络 人工神经网络是一种机器学习算法,兴起于上世纪八九十年代,但由于其本身计算量较大,受制...

breakloop 2804

人工智能算法数学基础之求导过程推导(单变量函数求导、多变量函数求导、向量求导、矩阵求导)

1、导数定义: 设函数y=f(x)在点x0的某个邻域内有定义,当自变量x在x0处有增量Δx,(x0+Δx)也在该邻域内时,相应地函数取得增量Δy=f(x0+Δx)-f(x0);如果Δy与Δx之比当Δx→0时极限存在,则称函数y=f(x)在点x0处可导,并称这个极限为函数y=f(x)在点x0处的导数记作 需要指出的是: 两者在数学上是等价的。 导函数 如果函数y=f...

nosprings的博客 2468
上一篇: Python3核心编程一:Python语言简介
下一篇: 人工智能神经网络:手写了一个RNN,预测序列,精准
猿说猿道
博客等级 码龄8年 120粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值