神经网络Python实现(9行代码)
1. 神经网络简介
神经网络由输入层、输出层和之间若干层(一层或多层)隐含层构成,每一层可以有若干个节点。层与层之间节点的连接状态通过权重来体现。
下面介绍一下单个神经元:
输入节点:x1,x2
权重:w1,w2
偏置:b
激活函数:h()
输出结果:y
a = x1*w1 + x2*w2 + b
2. 代码解释
这段代码是在GitHub上找到的,链接如下:
https://github.com/miloharper/simple-neural-network
作者这样描述这段代码:
A neural network written in Python, consisting of a single neuron that uses gradient descent to learn.
一种用Python编写的神经网络,它是由一个使用梯度下降学习的神经元组成。
from numpy import exp, array, random, dot
training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
training_set_outputs = array([[0, 1, 1, 0]]).T
random.seed(1)
synaptic_weights = 2 * random.random((3, 1)) - 1
for iteration in range(10000):output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))
print( 1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights)))))
① from numpy import exp, array, random, dot
#从Numpy库中调用exp(指数函数)、array(数组)、random(随机函数)、dot(矩阵相乘函数)
② training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
#神经网络训练部分的输入
③ training_set_outputs = array([[0, 1, 1, 0]]).T
#神经网络训练部分的输出,.T表示矩阵转置
④ random.seed(1)
#使用随机函数生成随机数(这一行代码可以省略,目的只是保证测试结果与作者一致)
⑤ synaptic_weights = 2 * random.random((3, 1)) – 1
⑥ for iteration in range(10000):
⑦ output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
#使用for语句循环10000次,将训练集的输入和权重采用.dot进行矩阵相乘,将相乘得到的结果输入到sigmoid函数,然后将得到的结果赋值给output
⑧ synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))
#权重的调整采用“误差加权导数”公式(梯度下降)
⑨ print (1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights))))) #[0.99993704]
#synaptic_weights是调整之后的最终权重,数组(矩阵)[1,0,0]与这个权重矩阵通过dot函数进行相乘,将相乘的结果作为输入引入到sigmoid函数,得到最终的结果
这段代码的模型如下图所示,有三个输入,一个输出,简单来说,神经网络就是一个通过训练集输入的数据不断地迭代更新权重的模型,使之输出更接近“标准答案”,这里推荐看一下B站上的一个有关神经网络的短视频:
一分钟告诉你什么是神经网络
这9行代码就是把上图的1~4组数据作为训练集进行模型训练,不断地更新权重使其输出更接近训练集中给出的输出标签(标准答案),然后将最后一组数据当做测试集来检测模型的准确度,它最后的结果输出是0.99993704,也是约等于1,其实不难发现,4组测试数据的输出都与第一个输入数据相同,所以说神经网络模型测试得到了正确的结果,这也是说明神经网络有预测结果的作用。
神经网络Python实现(9行代码)相关推荐
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
作者: 龙心尘&&寒小阳 时间:2015年12月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/5028124 ...
- python皮卡丘编程代码_再接再厉,用python编程13行代码解方程组(纯字符)
因为是示例为主,我们将方程组限制在二元一次方程组:x,y两个变量,两个方程.类似这样: 每个方程有两个变量,x和y,形式为:ax+by+c=d 由于这次有了两个方程,我们提取参数的代码就适合提炼为一个 ...
- Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋
Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋 写在前面 需要用到的工具包和参考 游戏设定 初始化 切换下棋方 判断五子连珠(核心) 鼠标点击流程事件 成品展示 打 ...
- Python简单几行代码实现黑客电影镜头屏幕画面
Python简单几行代码实现黑客电影镜头屏幕画面 通过几行简单的Python代码实现炫酷的数据流动效果 一.Python版本:Python3 二.操作示范 为了显得更加牛逼 逼真,通常不会直接运行源代 ...
- 【python】20行代码实现有道翻译api接口调用
文章目录 1. 目标站点 2. 完整代码 3. 测试样例 3.1. 测试样例Ⅰ(汉译英) 3.2. 测试样例Ⅱ(英译汉) 4. 调用文档 4.1. 接口地址 4.2. 请求方法 4.3. 请求参数 4 ...
- 教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!!
教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!! 代码展示: 开发环境: windows10 python3.6 开发工具: pycharm weddriver 库: sel ...
- 【python】15行代码实现猫脸检测(opencv)
文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...
- 【python】60行代码实现给头像戴上圣诞帽(opencv)
文章目录 1. 成果展示 2. 项目简介 3. 项目地址 4. 预备知识 5. 完整代码 6. 必要组件 7. 圣诞素材 8. 引用参考 9. 软件下载 1. 成果展示 2. 项目简介 原理很简单,就 ...
- 【python】15行代码实现人脸检测(opencv)
文章目录 1. 项目简介 2. 项目地址 3. 依赖模块 4. 完整代码 5. 必要组件 5.1. haar级联特征分类器(精度高) 5.2. lbp级联特征分类器(速度快) 6. 成果展示 6.1. ...
- python动态粒子素材,Python 技术篇-3行代码实现Gif动画生成,Gif动画素材获取方法...
Python 技术篇-3行代码实现Gif动画生成,Gif动画素材获取方法 Python 技术篇-3行代码实现Gif动画生成,Gif动画素材获取方法 我们需要用到 imageio 库,直接pip ins ...
最新文章
- JVM运行时数据区---方法区(演变和垃圾回收)
- idea设置自动编译
- 前端获取浏览器标识_浏览器缓存机制
- python中classmethod的用法_Python中的@classmethod是如何使用的?
- 从 TensorFlow 入门机器学习
- 牛客练习赛10 F-序列查询(莫队+链表)
- 站内搜索 调用方法 (谷歌 百度 雅虎)
- perl中的sleep函数
- 程序设计教程用c 语言编程,程序设计教程--用C 语言编程
- 计算机12点自动关机,电脑怎么设置定时自动关机命令 电脑设置定时关机方法【图文】...
- 【Java】# Java对图片进行base64编解码
- java 遍历对象属性并赋值_遍历实体类属性并赋值
- 荣耀 MagicBook Pro 加装固态硬盘
- 学计算机专业好还是学医专业好,学计算机好还是学医好 程序员的建议就是学医你认为呢...
- java 时间戳最大值_Java中在时间戳计算的过程中遇到的数据溢出问题解决
- BP 供应商创建与修改
- android app 安装
- 基于混沌系统的文本加密算法研究系列
- QQ找茬辅助工具 C#
- 基于百问网IMX6ULL_PRO开发板的Uboot移植(Uboot-2017.03)
热门文章
- 用 layoutInflater打气筒创建一个view对象
- C# 自动发送邮件被系统当做垃圾邮件退回的处理方法
- 关于火车采集js调用文章资讯的方法 淘宝采集 相关
- lazarus视频控件linux,开源软件之Lazarus:国产操作系统下写个跨平台截屏录屏软件...
- 高分辨轨道阱液质联用质谱仪-HFX
- 手下两个应届生:一个踏实喜欢加班,一个技术强挑活,怎么选?
- 英伟达取消12GB版4080发售,老黄也被骂怂了
- 囚徒健身 mobi 【分享】
- 截止2022年4月10日,unity5.6-2021(国际版)所有版本下载地址
- html自动化布局,自动化部门任务