【机器学习】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…...
逆向思维:从资源困境到自由获取,猫抓如何重塑你的网页体验
逆向思维:从资源困境到自由获取,猫抓如何重塑你的网页体验 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾面对心仪…...
深入浅出MIPI D-PHY:对比HS高速模式与LP低功耗模式,揭秘手机摄像头省电又流畅的底层原理
解密MIPI D-PHY:手机摄像头如何实现高速与低功耗的完美平衡 当你用手机拍摄4K视频时,是否想过为什么画面如此流畅,而电量消耗却相对可控?这背后隐藏着一项关键技术——MIPI D-PHY物理层协议。作为现代移动设备图像传输的核心通道&…...
微软 Copilot 条款更新:功能拓展与合规管控并行
微软 Copilot 条款更新:明确适用范围与新增功能规则微软 Copilot 此次更新使用条款,明确了条款适用于某些 Copilot 服务和体验的具体情形。新增了关于 Copilot Actions、Copilot Labs 和购物体验的条款,还修订了行为准则,清晰界定…...
运动生物力学数据分析全流程dz: 运动学分析:Qualysis_Vicon动作捕捉数据处理(关节角度、角速度、重心轨迹等) 动力学分析:AMTI_Kistler测力台数据处理、逆动力学计算(关节力、力
运动生物力学数据分析全流程dz: 运动学分析:Qualysis/Vicon动作捕捉数据处理(关节角度、角速度、重心轨迹等) 动力学分析:AMTI/Kistler测力台数据处理、逆动力学计算(关节力、力矩、功率) 肌电信…...
Local SDXL-Turbo保姆级教程:导出为ONNX格式进一步优化推理速度
Local SDXL-Turbo保姆级教程:导出为ONNX格式进一步优化推理速度 1. 引言:为什么需要导出ONNX? 如果你已经体验过Local SDXL-Turbo那“打字即出图”的畅快感,可能会想:这速度已经很快了,还能不能再快一点&…...
m4s-converter:打破B站缓存限制,永久保存珍贵视频内容
m4s-converter:打破B站缓存限制,永久保存珍贵视频内容 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在数字内容时代&am…...
用LED条形图可视化74HC154译码效果:STC89C52项目入门指南
用LED条形图可视化74HC154译码效果:STC89C52项目入门指南 第一次接触单片机时,看到那些闪烁的LED灯总让人充满好奇——它们是怎么按照我们的想法亮起来的?今天我们就用STC89C52单片机和74HC154译码器,亲手搭建一个会"跳舞&q…...
douyin-downloader:抖音音频高效提取全攻略
douyin-downloader:抖音音频高效提取全攻略 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批…...
IntelliJ IDEA 2026.1 版本发布,多维度升级助力开发体验
AI 能力拓展:内置多 Agent 提升开发效率IntelliJ IDEA 2026.1 版本在 AI 方面有显著升级,内置支持更多 AI agent,如 Codex、Cursor 以及任何兼容 ACP 的 agent。ACP Registry 实现了一键浏览和安装 AI agent,方便开发者快速引入所…...
Wan2.2-T2V-A5B实战:GitHub版本管理下的团队协作开发流程
Wan2.2-T2V-A5B实战:GitHub版本管理下的团队协作开发流程 你是不是也遇到过这样的场景?团队几个人一起开发一个基于Wan2.2-T2V-A5B的应用项目,代码改来改去,最后谁改了哪部分、为什么改、线上版本和本地版本哪个更新,…...
