【机器学习】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…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
