当前位置: 首页 > news >正文

【机器学习】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 1layer 2layer 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 时,表示结果为真,否则为假;

神经元的输出公式

根据下图,思考:

  1. 输入层矩阵 x⃗\vec{x}x 是一个 ?∗??*??? 的矩阵?
  2. 隐藏层 layer 1 输出的 a⃗[1]\vec{a}^{[1]}a[1] 是一个 ?∗??*??? 的矩阵?
  3. 隐藏层 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】:

  1. 输入层 x⃗\vec{x}x 是一个 n∗mn*mnm 的矩阵,其中 nnn 是训练样本的个数,mmm 是样本的特征。样本的 mmm 个特征,影响着隐藏层 layer 1 的向量参数矩阵形状。

  2. 隐藏层 layer 1 输出的 a⃗[1]\vec{a}^{[1]}a[1] 是一个 1∗41*414 的矩阵,内容为 layer 1 中四个神经元的结果;

  3. 隐藏层 layer 1 的向量参数 w⃗\vec{w}w 是一个 m∗4m*4m4 的矩阵,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. 假设我们有两个矩阵 AAABBB,它们的形状分别为 (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不能乱接、瞎写、胡写&#xff…...

命令行上的数据科学第二版 一、简介

原文: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…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...