【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现
Tensorflow 第一节:使用指南
- Tensorflow 安装
- 神经网络
- 一些基本概念
- 隐藏层和输出层:
- 神经元的输出公式
- Tensorflow 全连接层 Dense 与 顺序模型 Sequential
- Dense Layer
- Sequential Model
- 代码实现一个神经网络
- 实现方式一:手写神经网络
- * 实现方式二:Tensorflow
Tensorflow 安装
有关 Tensorflow/CUDA/cuDNN 安装,见博客:https://xu-hongduo.blog.csdn.net/article/details/129927665
神经网络
一些基本概念
- 上图中包含输入层、隐藏层、输出层;
- 其中输入层为 layer 0,输入到网络中的内容为 x⃗\vec{x}x;
- 其中隐藏层有三层,layer 1,layer 2,layer 3;
- 其中输出层为 layer 4,输出内容为 a⃗[4]\vec{a}^{[4]}a[4];
- 如果需要统计该神经网络有多少层,则统计为:神经网络层数=隐藏层个数+输出层个数=3+1=4神经网络层数 = 隐藏层个数 + 输出层个数 = 3 + 1 = 4神经网络层数=隐藏层个数+输出层个数=3+1=4
隐藏层和输出层:
- 关于隐藏层 layer 1
- 隐藏层 layer 1 中包含四个神经元,其中每个神经元的输入为:x⃗\vec{x}x;
- 隐藏层 layer 1 的输出为 a⃗[1]\vec{a}^{[1]}a[1],一个包含四个元素的矩阵,分别为 layer 1 中四个神经元输出的结果;
- 关于隐藏层 layer 2
- 隐藏层 layer 2 中包含五个神经元,其中每个神经元的输入为:a⃗[1]\vec{a}^{[1]}a[1];
- 隐藏层 layer 2 的输出为 a⃗[2]\vec{a}^{[2]}a[2],一个包含五个元素的矩阵,分别为 layer 2 中五个神经元输出的结果;
- 关于隐藏层 layer 3
- 隐藏层 layer 3 中包含三个神经元,其中每个神经元的输入为:a⃗[2]\vec{a}^{[2]}a[2];
- 隐藏层 layer 3 的输出为 a⃗[3]\vec{a}^{[3]}a[3],一个包含三个元素的矩阵,分别为 layer 3 中三个神经元输出的结果;
- 关于输出层 layer 4
- 输出层 layer 4 中只有一个神经元,需要注意的是,输出层不限制神经元的个数,而是根据具体情况进行分析,从而规定神经元的数量。
- 输出层的输入为:一个包含三个元素的矩阵 a⃗[3]\vec{a}^{[3]}a[3];输出为一个值 a[4]a^{[4]}a[4],当 a[4]≥0.5a^{[4]}≥0.5a[4]≥0.5 时,表示结果为真,否则为假;
神经元的输出公式
根据下图,思考:
- 输入层矩阵 x⃗\vec{x}x 是一个 ?∗??*??∗? 的矩阵?
- 隐藏层 layer 1 输出的 a⃗[1]\vec{a}^{[1]}a[1] 是一个 ?∗??*??∗? 的矩阵?
- 隐藏层 layer 1 的向量参数 w⃗\vec{w}w 是一个 ?∗??*??∗? 的矩阵?
列举隐藏层 layer 1 的输出公式:
layer 1 中包含四个神经元:
- a1[1]=g(w⃗1[1]⋅x⃗+b1[1])a_1^{[1]} = g(\vec{w}^{[1]}_1 · \vec{x} + b^{[1]}_1)a1[1]=g(w1[1]⋅x+b1[1])
- a2[1]=g(w⃗2[1]⋅x⃗+b2[1])a_2^{[1]} = g(\vec{w}^{[1]}_2 · \vec{x} + b^{[1]}_2)a2[1]=g(w2[1]⋅x+b2[1])
- a3[1]=g(w⃗3[1]⋅x⃗+b3[1])a_3^{[1]} = g(\vec{w}^{[1]}_3 · \vec{x} + b^{[1]}_3)a3[1]=g(w3[1]⋅x+b3[1])
- a4[1]=g(w⃗4[1]⋅x⃗+b4[1])a_4^{[1]} = g(\vec{w}^{[1]}_4 · \vec{x} + b^{[1]}_4)a4[1]=g(w4[1]⋅x+b4[1])
layer 1 的输出为一个二维数组:
a⃗[1]=[[a1[1],a2[1],a3[1],a4[1]]]\vec{a}^{[1]} = [[a_1^{[1]}, a_2^{[1]}, a_3^{[1]}, a_4^{[1]}]]a[1]=[[a1[1],a2[1],a3[1],a4[1]]]
根据上述内容,回答上述的三个问题【1】【2】【3】:
-
输入层 x⃗\vec{x}x 是一个 n∗mn*mn∗m 的矩阵,其中 nnn 是训练样本的个数,mmm 是样本的特征。样本的 mmm 个特征,影响着隐藏层 layer 1 的向量参数矩阵形状。
-
隐藏层 layer 1 输出的 a⃗[1]\vec{a}^{[1]}a[1] 是一个 1∗41*41∗4 的矩阵,内容为 layer 1 中四个神经元的结果;
-
隐藏层 layer 1 的向量参数 w⃗\vec{w}w 是一个 m∗4m*4m∗4 的矩阵,mmm 代表输入的特征,根据这些输入的特征,我们输出 444 个值组成的 a⃗[1]\vec{a}^{[1]}a[1];
Tensorflow 全连接层 Dense 与 顺序模型 Sequential
下面内容我将围绕如何使用 tensorflow
代码实现上述的隐藏层以及诸多神经元:
Dense Layer
首先有请全连接层 Dense Layer
全连接层:
全连接层(Dense) 是深度神经网络中常用的一种层类型,也是最基本的层类型之一。全连接层将上一层(输入层或者前一层隐藏层)的每个神经元与本层的 每个神经元 都进行连接,形成一个完全连接的网络结构,因此也称为全连接层。
在全连接层中,每个神经元的输出值是上一层所有神经元的 加权和,然后再经过一个 非线性激活函数 进行处理。如果本层有 nnn 个神经元,上一层有 mmm 个神经元,那么全连接层的 权重矩阵 (w⃗\vec{w}w)就是一个形状为 (m,n)(m, n)(m,n) 的矩阵,而偏置向量(bbb)的长度为 nnn。
Sequential Model
Sequential model 是一种按顺序堆叠各种深度学习层的简单模型。在 Sequential model 中,每一层的输出都成为下一层的输入,这些层按照 顺序连接 在一起形成一个深度学习模型,故称为:顺序模型;
代码实现一个神经网络
实现方式一:手写神经网络
本节内容只是为了知识引入,完整的一个 Minst 判断手写 0/1 项目链接如下:
xxxxxx
def my_dense(a_in, W, b, g):units = W.shape[1]a_out = np.zeros(units)for i in range(units):w = W[:,i]z = np.dot(w, a_in) + b[i]a_out[i] = g(z)return(a_out)
简化上述代码,方案:通过 np.matmul()
在进行矩阵乘法计算时,np.matmul()
会自动识别输入的数组的维度,并根据矩阵乘法的规则进行计算。
e.g.e.g.e.g. 假设我们有两个矩阵 AAA 和 BBB,它们的形状分别为 (m,n)(m, n)(m,n) 和 (n,p)(n, p)(n,p),那么它们的乘积矩阵 CCC 的形状为 (m,p)(m, p)(m,p);
def my_dense_v(A_in, W, b, g):Z = np.matmul(A_in,W)+bA_out = g(Z)return(A_out)
* 实现方式二:Tensorflow
本节内容只是为了知识引入,完整的一个 Minst 判断手写 0/1 项目链接如下:
xxxxxx
model = Sequential([ tf.keras.Input(shape=(400,)),Dense(units = 25, activation='sigmoid'),Dense(units = 15, activation='sigmoid'),Dense(units = 1, activation='sigmoid') ], name = "my_model"
)
上述代码中,我们引入了三个全连接层:
Dense(units = 25, activation = 'sigmoid')
- 该层(隐藏层)包含 25 个神经元,采用 sigmoid 作为激活函数;
- 参数的总个数为:400 * 25 + 25 = 10025;
Dense(units = 15, activation = 'sigmoid')
- 该层(隐藏层)包含 15 个神经元,采用 sigmoid 作为激活函数
- 参数的总个数为:25 * 15 + 15 = 390;
Dense(units = 1, activation = 'sigmoid')
- 该层(输出层)包含 1 个神经元,采用 sigmoid 作为激活函数
- 参数的总个数为:15 * 1 + 1 = 16;
完整的一个 Minst 判断手写 0/1 项目链接如下:
xxxxxx
相关文章:

【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现
Tensorflow 第一节:使用指南Tensorflow 安装神经网络一些基本概念隐藏层和输出层:神经元的输出公式Tensorflow 全连接层 Dense 与 顺序模型 SequentialDense LayerSequential Model代码实现一个神经网络实现方式一:手写神经网络* 实现方式二&…...

ubuntu18.04安装nvidia驱动,3种方式图文详解+卸载教程
教程目录一、关闭secure boot二、禁用nouveau驱动2.1 创建配置文件2.2 添加内容2.3 重启电脑2.4 输入命令验证三、安装显卡驱动3.1 软件和更新(失败)3.2 PPA源安装3.3 官网安装包安装四、卸载显卡驱动笔记本类型Ubuntu系统显卡版本联想拯救者Y7000win10U…...

多线程进阶学习11------CountDownLatch、CyclicBarrier、Semaphore详解
CountDownLatch ①. CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞 ②. 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞) ③. 计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行 public static void m…...

华为OD机试用java实现 -【RSA 加密算法】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:RSA 加密算法 题目 RSA 加密…...

技术宅小伙:大龄程序员就业,未来我们将何去何从?
程序员是一个高薪高压的职业,同时也是一个需要不断学习的职业。随着技术的不断更新换代,程序员需要不断地学习新的知识和技能,以适应市场的需求。然而,有些程序员可能会遭遇裁员,失去了稳定的收入来源。有些程序员可能…...

Spring Boot+Vue实现Socket通知推送
目录 Spring Boot端 第一步,引入依赖 第二步,创建WebSocket配置类 第三步,创建WebSocket服务 第四步,创建Controller进行发送测试 Vue端 第一步,创建连接工具类 第二步,建立连接 编辑 第三步&a…...

python---python介绍
python介绍 1.1介绍 1.1.1为什么学习 1.1.2什么是python 优雅简单易学1.1.3在线2进制转换 在线二进制转文本工具 - 转换 1.1.4python的安装和配置 1.需要配置对应的环境变量。可以设置多个。 默认全选 设置安装的路径 最后安装完成即可。 验证:python 如何退出 1.1.…...

第十四届蓝桥杯大赛——真题训练第10天
目录 第一题:扫雷 题目描述 输入描述 输出描述 输入输出样例 运行限制 题目代码 第 2 题:完全平方数 问题描述 输入格式 输出格式 样例输入 1 样例输出 1 样例输入 2 样例输出 2 题目分析 题目代码 第三题:求阶乘 问题描述…...

3.29~3.30学习总结
刷题情况: 蓝桥杯刷题: Java学习情况: 抽象类:如果将子类中抽取的共性行为(方法),子类的执行不一样的时候 (通俗一点来说,就是无法找到一个万能的方法体供子类使用,但这…...

结构体详解 ——— C语言
目录 1.结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段(位段的填充&可移植性) 位段的内存分配 1.结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对…...

Java SE 基础(4) Java的语言特点
语言特点 Java是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论&a…...

都炸店了,拼多多还在坚持什么
子超这两天听说了拼多多被“炸店”事件,第一反应是震惊:这都什么年代了,还有这种不择手段的暴力行为?所谓的炸店,就是一些人员被煽动和组织起来,有预谋地对店铺发起打砸行动,这和线下去打砸商铺…...

vue尚品汇商城项目-day01【6.Footer组件的显示与隐藏】
文章目录6.Footer组件的显示与隐藏6.1我们可以根据组件身上的$route获取当前路由的信息,通过路由路径判断Footer显示与隐藏6.2配置路由的时候,可以给路由添加元信息[meta],路由需要配置对象,它的key不能乱接、瞎写、胡写ÿ…...

命令行上的数据科学第二版 一、简介
原文:https://datascienceatthecommandline.com/2e/chapter-1-introduction.html 贡献者:Ting-xin 这本书是关于如何利用命令行做数据科学的。我的目标是通过教你使用命令行的力量,让自己成为一名更高效和多产的数据科学家。 在标题中同时使…...

utf-8转换到utf-16的转换过程你懂吗?
人生自是有情痴,此恨不关风与月。——唐代元稹《离思》 从UTF-8编码的文件中读取文本并将其存储到Java的String对象中,涉及到从字节序列到Unicode码点,再到UTF-16编码的转换。以下是详细的步骤: 从文件读取字节序列:首…...

C++编程大师之路:从入门到精通--持续更新中~
文章目录前言主要内容C基础入门初识C第一个C程序注释变量常量关键字标识符命名规则数据类型整型sizeof关键字实型(浮点型)字符型转义字符字符串型布尔类型 bool数据的输入运算符算术运算符赋值运算符比较运算符逻辑运算符程序流程结构选择结构if语句三目…...

面试阿里软件测试岗,收到offer后我却毫不犹豫拒绝了....
我大学学的是计算机专业,毕业的时候,对于找工作比较迷茫,也不知道当时怎么想的,一头就扎进了一家外包公司,一干就是2年。我想说的是,但凡有点机会,千万别去外包! 在深思熟虑过后&am…...

【c语言多线程编程】关于pthread_create()和pthread_join()的多线程详解
关于pthread_create()和pthread_join()的多线程详解 一、首先说一下pthread_create() 函数的用法: int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine) (void *),void *arg);各参数的含义: 1、pthread_t *thre…...

抖音seo矩阵系统源码搭建技术+二开开源代码定制部署
抖音已经成为了当今最为流行的短视频平台之一,拥有着庞大的用户群体和海量的视频资源。对于一些商家或者运营者来说,如何从这些视频资源中挖掘出有效的信息,进而提升自己的品牌、产品或者内容的曝光度,就成为了一个非常重要的问题…...

【周赛刷题】平衡树+图中最短环
2612. 最少翻转操作数(平衡树) 题目的难度有一部分在于数学推导。对于某个点 iii 进行反转是有一个范围的,这个范围需要考虑到边界的情况。可以的得到的一个结论是。对于窗口反转,KaTeX parse error: Expected group after ^ at p…...

C++笔记——第十篇 继承 的解析,详细易懂哦
目录 一、继承的概念及定义 1.继承的概念 2. 继承定义 2.1定义格式 2.2继承关系和访问限定符 2.3继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、复杂的菱形继承…...

SQL Server中的全文搜索
SQL Server中的全文搜索一、概述二、全文搜索查询三、将全文搜索查询与 LIKE 谓词进行比较四、全文搜索体系结构4.1、SQL Server 进程4.2、过滤器守护程序主机进程五、全文搜索处理5.1、全文索引过程5.2、全文查询流程六、全文索引体系结构6.1、全文索引结构6.2、全文索引片段6…...

自适应平移混音方法
一、简介: 自适应平移混音方法是一种常见的音频混音技术,它利用自适应滤波器对不同音频信号进行平移和加权,从而实现混音。 二、该方法的基本步骤如下: 采集和存储需要混音的音频信号。 对其中一个音频信号进行预处理,…...

炼钢厂VR职业技能实训软件,提高员工学习效率和掌握技能速度
炼钢作业是一个高危、高压、高温的行业,在实际操作中需要严格遵守安全规范和操作规程,一旦出现差错可能造成巨大的经济损失和人员伤亡。 利用广州华锐互动开发的炼钢厂VR职业技能实训软件,可以有效帮助员工更好地理解和掌握炼钢作业中的相关…...

MySQL数据库范式
文章目录MySQL数据库范式1、范式的优缺点2、第一范式3、第二范式4、第三范式5、BC范式6、第四范式MySQL数据库范式 1、范式的优缺点 应用数据库范式的好处: 减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)消除异常&…...

通过多层方法重塑网络安全
多年来,网络安全威胁的复杂性不断增加。此外,随着远程和混合工作场所模式的兴起,网络犯罪分子可以利用的漏洞数量显着增加。由于可能存在的网络威胁的范围如此之广,因此没有一种单一的解决方案可以应对所有威胁。 由于多种原因&a…...

Golang学习+深入(四)-运算符
目录 一、概述 1、算数运算符 2、关系运算符 3、逻辑运算符 4、赋值运算符 5、运算符优先级 6、位运算符 7、其他运算符 二、进制 1、进制转换 1、其他进制转十进制 2、十进制转其他进制 3、二进制转其他进制 4、其他进制转二进制 5、二进制在运算中的说明 三、…...

C++ 运算符重载:C++ 运算符重载的高级技巧和最佳实践
C 运算符重载:深入剖析与实现I. 引言A. 什么是运算符重载B. 为什么要使用运算符重载C. C运算符重载的优缺点II. 运算符重载基本概念A. 运算符重载的定义B. 运算符重载的分类1. 一元运算符2. 二元运算符C. 限制与规范1. 无法重载的运算符2. 重载运算符的规范与建议II…...

软件测试找了2个月了,找不到工作怎么办?
那就问你一些问题,看你能回答多少 1:测试流程是什么?测试用例包含哪些内容?测试用例设计都有哪些?给你一个一次性杯子,你会怎么测试? 2:数据库怎么查看前十行数据?内连接和外连接的区别&#…...

满足高并发的TB API接口接入说明
大家都知道,淘宝的反爬虫机制十分严,而很多时候,没办法高效的拿到数据内容响应终端需求,而依赖爬虫就会造成动不动就出现滑块验证,让人很无解。这里我们分享让采集不再出现任何滑块验证码,完全解密通过&…...