还记得我们上次讲到识别图片的神经网络吗?上次我们借助TensorFlow来完成了对图片的识别,对神经网络的工作原理也有所了解了,那么我们今天来尝试一下,从零开始,自己搭建一个简单的神经网络如何?
ok,如果你的回答是"好",那我们就继续往下看,如果你的回答是"不好",那我们今天到这里就结束了。
回答"好"的同学,那我们就开始往下看了:
首先我们要明确我们要做什么:
从零搭建一个神经网络我们需要四个步骤:
1、定义网络的结构,包含输入,输出,隐藏层
2、初始化模型的参数
3、正向传播(计算损失值)
4、反向传播(对权值进行更新)
(3、4两步是不停的重复去做的)
ok,那我们开始了!
在这里,我们需要用到numpy进行数据运算:
pip install numpy
安装完毕之后,我们就开始定义我们的激活函数了,这里我们定义一个简单的SIGMOD函数:
在定义好激活函数之后,下面我们需要来定义网络结构,可爱的numpy早就为我们准备好了自带是网络结构,也就是二维矩阵,我们可以简单的对数据进行定义。通过numpy的array方法创建一个二维矩阵,也就是我们的网络结构:
输出:
下面,我们来对模型参数进行初始化:两个参数w,b(权值和偏置项)
初始化完成之后我们就要完成正向传播和反向传播了,对于正向传播,我们用来计算预测的值,而反向传播则是根据预测值和实际值之间的误差来不断更新w和b的一个过程。
首先,我们来定义正向传播:
返回梯度grads和损失cost,在计算结束后有必要断言一下数据类型,防止数据出问题。
下面我们来定义一个反向传播,来更新权值和偏置项:
将之前定义的正向传播函数放进去执行迭代操作,计算每一步的当前损失和梯度,利用梯度下降法对权值进行更新
到这里整个模型就搭建完啦!
最后,当我们简单的预测模型搭建完毕之后,我们再把对应的预测函数写一下,这样前前后后就算大功告成了!
到现在为止,我们的一个简单的神经网络模型和预测函数就全部写完了,怎么样,是不是很简单?
你也动手来试试吧!
代码地址:
https://www.bytelang.com/o/s/c/34DtxAiWGjs=
感兴趣的扫个二维码吧!
分享到:
相关推荐
《搭建自己的神经网络》这本书由...总之,《搭建自己的神经网络》是一本非常适合初学者的神经网络教程,它不仅讲解了理论知识,还提供了实践指导,使读者能够从零开始构建自己的神经网络模型,体验人工智能的魅力。
卷积神经网络的基础内容可以参考:机器学习算法之卷积神经网络卷积神经网络一般包括卷积层,池化层和全连接层,下面分别介绍一下2.1卷积层卷积神经网络里面的这个卷积和信号里面的卷积是有些差别的,信号中的卷积...
作业:从零开始构建三层神经网络分类器,实现图像分类__任务描述:_手工搭建三层神经网络分类器,在数据_nn_hw1
内容概要:本文详细介绍了如何从零开始用 Python 实现一个简单的三层神经网络(包含输入层、隐藏层和输出层),并对比了它与 Logistic 回归在非线性分类任务中的表现。文中首先通过生成非线性数据集来展示传统线性...
numpy 使用框架搭建神经网络很简单,但是不用框架从头搭建一个神经网络更能加深理解。 本文使用 numpy 实现了一个四层的 DNN 来对图片进行二分类:来判断图片中是否有猫。 项目源自吴恩达老师在 Coursera 开设的...
使用框架搭建神经网络很简单,但是不用框架从头搭建一个神经网络更能加深理解。 本文使用 numpy 实现了一个四层的 DNN 来对图片进行二分类:来判断图片中是否有猫。 项目源自吴恩达老师在 Coursera 开设的深度学习...
4. 神经网络基础 1. 什么是神经网络? 2. 神经网络的组成部分 3. 前向传播与反向传播 5. 数据准备 1. 数据集的选择与导入 2. 数据预处理 3. 训练集与测试集划分 6. 使用TensorFlow构建简单神经网络 1. ...
每个滤波器在图像上滑动(卷积),并以局部区域(感受野)内的像素值与滤波器权重进行逐元素乘法后求和,生成一个输出值。这一过程强调了局部特征的重要性,因为每个滤波器仅对一小部分相邻像素进行响应,从而能够...
这门课程"人工智能编程学习从零开始第一课——开发测试环境搭建"显然是为了引导初学者如何建立一个有效的工作平台,以便进行后续的编程实践。环境搭建不仅涉及到软件安装,还包括配置、调试和优化,确保开发过程的...
通过"人工智能编程学习从零开始第一课开发测试环境搭建"这门课程,你将系统地学习如何从无到有建立自己的AI开发环境,为后续的编程学习打下坚实的基础。记住,一个好的起点能够使你在学习路径上少走弯路,更高效地...
在本文中,我们将深入探讨如何使用Python从零开始搭建GPT模型,这是一个基于人工智能和深度学习的任务。GPT(Generative Pre-trained Transformer)是OpenAI推出的一种预训练语言模型,它能够生成连贯的文本,尤其在...
本项目实现了不依赖任何特定框架,如TensorFlow、PyTorch等,从零开始编写全连接神经网络,对MNIST手写数字数据集进行识别。这样的实现方式有助于理解神经网络的工作原理,并能灵活地调整网络结构和激活函数。 全...
任务描述 ...每张图片都由一个28×28的矩阵表示,且数字都会出现在图片的正中间,处理后的每一张图片是一个长度为784的一维数组(28*28=784),这个数组中的元素对应了图片像素矩阵中的每一个数字。
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在...
对于初学者来说,本书特别强调了从零开始的学习路径,一步步引导读者掌握神经网络的理论与MATLAB工具箱的操作。对于有一定基础的读者,书中提供的高级主题和实战项目也能帮助他们提升技能,解决实际问题。 总的来说...
通过深入研究"ex3-neural network"提供的代码,你可以更好地理解神经网络的理论与实践,掌握如何在Python中从零开始搭建和训练一个简单的神经网络。这将有助于你进一步探索更复杂的深度学习模型。
总的来说,这个项目将涵盖深度学习的基本概念,包括神经网络架构、反向传播算法、以及如何从零开始实现这些概念。对于初学者来说,这样的实践可以帮助深入理解深度学习的工作原理,同时提高编程能力。而对于有经验的...
本文将介绍如何使用Python从零开始构建一个简单的点击率预估模型,以解决老板提出的微博点击率预测问题。 首先,业务场景是预测微博是否会被用户点击。每条微博数据包含微博ID、三个特征(是否有娱乐明星、是否有图...