手写简单神经网络

本文介绍了手动构建神经网络的基本步骤,包括定义sigmoid激活函数、初始化权重、前向传播、反向传播和权重更新。通过一个简单的两层神经网络实例,详细解释了神经网络的工作原理,如激活函数的作用、链式法则在反向传播中的应用,以及梯度下降在参数更新中的意义。
摘要由CSDN通过智能技术生成

最进在学神经网络,所以就得先从基础得做起,手写神经网络(斜眼笑),那就~开始吧!!

import numpy as np

#sigmoid激活函数
def sigmoid(x,deriv=False):
    if deriv == True:
        return x*(1-x)
    else:
        return 1/(1+np.exp(-x))

在这里先写一个sigmoid激活函数,else后面就是sigmoid得表达式,其数学公式也很简单

在这里插入图片描述
它的图像是这样的
在这里插入图片描述
至于if后面的x*(1-x)是sigmoid函数的求导之后的表达式,其化简过程是这样的在这里插入图片描述
其中
在这里插入图片描述
至于为什么是x*(1-x),下面在作解释,现在我们得定义输入了,再次就随意定义了,只为说明神经网络原理,

#输入x
x =
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MINIST手写体识别是一个常见的机器学习问题,神经网络是其中一种常用的方法。以下是一个简单的MINIST手写神经网络的实现: 1. 数据准备:MINIST手写体数据集包含60000个训练样本和10000个测试样本,每个样本是一个28x28的灰度图像。我们需要将这些图像转换为一维数组,并将像素值归一化到0到1的范围内。 2. 模型设计:我们使用一个简单的三层全连接神经网络,其中输入层有784个神经元(对应28x28的像素),中间层有128个神经元,输出层有10个神经元(对应10个数字)。 3. 训练模型:我们使用随机梯度下降算法训练模型,每次训练使用一个样本,重复多次迭代,直到损失函数收敛。在每个迭代中,我们计算损失函数的梯度,并根据梯度更新模型的参数。 4. 测试模型:我们用测试集中的样本测试训练好的模型的性能。对于每个测试样本,我们将其输入到神经网络中,得到一个10维向量,每个维度对应一个数字的概率。我们选择概率最大的数字作为模型预测的输出,并与真实标签比较,计算模型的准确率。 5. 优化模型:我们可以通过调整模型的超参数来进一步优化模型的性能,例如调整学习率、批大小、中间层神经元数量等。我们也可以采用更复杂的神经网络结构,例如卷积神经网络,来进一步提高模型的准确率。 以上是一个简单的MINIST手写神经网络的实现过程,具体实现细节可以参考相关的机器学习教程和代码实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值