【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现

这篇具有很好参考价值的文章主要介绍了【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Tensorflow 安装

有关 Tensorflow/CUDA/cuDNN 安装,见博客:https://xu-hongduo.blog.csdn.net/article/details/129927665

神经网络

【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现

一些基本概念

  • 上图中包含输入层、隐藏层、输出层;
  • 其中输入层为 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.5 a^{[4]}≥0.5 a[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 是一个 ? ∗ ? ?*? ?? 的矩阵?

【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现
列举隐藏层 layer 1 的输出公式:

layer 1 中包含四个神经元:

  • a 1 [ 1 ] = g ( w ⃗ 1 [ 1 ] ⋅ x ⃗ + b 1 [ 1 ] ) a_1^{[1]} = g(\vec{w}^{[1]}_1 · \vec{x} + b^{[1]}_1) a1[1]=g(w 1[1]x +b1[1])
  • a 2 [ 1 ] = g ( w ⃗ 2 [ 1 ] ⋅ x ⃗ + b 2 [ 1 ] ) a_2^{[1]} = g(\vec{w}^{[1]}_2 · \vec{x} + b^{[1]}_2) a2[1]=g(w 2[1]x +b2[1])
  • a 3 [ 1 ] = g ( w ⃗ 3 [ 1 ] ⋅ x ⃗ + b 3 [ 1 ] ) a_3^{[1]} = g(\vec{w}^{[1]}_3 · \vec{x} + b^{[1]}_3) a3[1]=g(w 3[1]x +b3[1])
  • a 4 [ 1 ] = g ( w ⃗ 4 [ 1 ] ⋅ x ⃗ + b 4 [ 1 ] ) a_4^{[1]} = g(\vec{w}^{[1]}_4 · \vec{x} + b^{[1]}_4) a4[1]=g(w 4[1]x +b4[1])

layer 1 的输出为一个二维数组:
a ⃗ [ 1 ] = [ [ a 1 [ 1 ] , a 2 [ 1 ] , a 3 [ 1 ] , a 4 [ 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 ∗ m n*m nm 的矩阵,其中 n n n 是训练样本的个数, m m m 是样本的特征。样本的 m m m 个特征,影响着隐藏层 layer 1 的向量参数矩阵形状。

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

  3. 隐藏层 layer 1 的向量参数 w ⃗ \vec{w} w 是一个 m ∗ 4 m*4 m4 的矩阵, m m m 代表输入的特征,根据这些输入的特征,我们输出 4 4 4 个值组成的 a ⃗ [ 1 ] \vec{a}^{[1]} a [1]


Tensorflow 全连接层 Dense 与 顺序模型 Sequential

下面内容我将围绕如何使用 tensorflow 代码实现上述的隐藏层以及诸多神经元:

Dense Layer

首先有请全连接层 Dense Layer 全连接层:

全连接层(Dense) 是深度神经网络中常用的一种层类型,也是最基本的层类型之一。全连接层将上一层(输入层或者前一层隐藏层)的每个神经元与本层的 每个神经元 都进行连接,形成一个完全连接的网络结构,因此也称为全连接层。

在全连接层中,每个神经元的输出值是上一层所有神经元的 加权和,然后再经过一个 非线性激活函数 进行处理。如果本层有 n n n 个神经元,上一层有 m m m 个神经元,那么全连接层的 权重矩阵 w ⃗ \vec{w} w )就是一个形状为 ( m , n ) (m, n) (m,n) 的矩阵,而偏置向量( b b b)的长度为 n n n


Sequential Model

Sequential model 是一种按顺序堆叠各种深度学习层的简单模型。在 Sequential model 中,每一层的输出都成为下一层的输入,这些层按照 顺序连接 在一起形成一个深度学习模型,故称为:顺序模型;


代码实现一个神经网络

【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现

实现方式一:手写神经网络

本节内容只是为了知识引入,完整的一个 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. 假设我们有两个矩阵 A A A B B B,它们的形状分别为 ( m , n ) (m, n) (m,n) ( n , p ) (n, p) (n,p),那么它们的乘积矩阵 C C C 的形状为 ( m , p ) (m, p) (m,p)

def my_dense_v(A_in, W, b, g):

    Z = np.matmul(A_in,W)+b
    A_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文章来源地址https://www.toymoban.com/news/detail-406835.html

到了这里,关于【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 LSTM 和 TensorFlow 中的注意力机制进行高级股票形态预测:Apple Inc. (AAPL) 数据分步指南

            在瞬息万变的金融市场中,准确的预测就像圣杯一样。当我们寻求更复杂的技术来解释市场趋势时,机器学习成为希望的灯塔。在各种机器学习模型中,长短期记忆(LSTM)网络受到了极大的关注。当与注意力机制相结合时,这些模型变得更加强大,尤其是在分析

    2024年04月17日
    浏览(56)
  • MT6701磁编码器使用指南,14Bit单圈绝对值,I2C stm32 HAL库读角度,兼容AS5600

      MT6701是麦歌恩(MagnTek)公司的磁性角度传感器芯片,提供14Bit 0~360°单圈绝对角度检测,拥有 ABZ/PWM/模拟量/I2C/SSI 等多种信息输出方式,还可根据磁场强度的瞬时变化提供非接触式按压检测功能。能够以较低的成本来替代传统光电编码器,可应用于绝对值角度输出、闭环

    2024年02月02日
    浏览(51)
  • ChatRWKV 学习笔记和使用指南

    Receptance Weighted Key Value(RWKV)是pengbo提出的一个新的语言模型架构,它使用了线性的注意力机制,把Transformer的高效并行训练与RNN的高效推理相结合,使得模型在训练期间可以并行,并在推理的时候保持恒定的计算和内存复杂度。目前RWKV的社区已经非常火了,我们从huggingfa

    2024年02月10日
    浏览(31)
  • ChatGPT 中文调教指南。各种场景使用指南。学习怎么让它听你的话。

    “写一本拥有出人意料结局的推理小说。” “写一个让读者参与其中的交互小说。” “为孩子们写一本激励他们勇敢面对挑战的小说。” “编写一个有关科技创新的未来世界的小说。” “创造一个让读者感到沉浸其中的幻想故事。” 我想让你充当 Linux 终端。我将输入命令

    2024年02月01日
    浏览(59)
  • LLM本地知识库问答系统(一):使用LangChain和LlamaIndex从零构建PDF聊天机器人指南

           随着大型语言模型(LLM)(如ChatGPT和GPT-4)的兴起,现在比以往任何时候都更容易构建比普通熊更智能的智能聊天机器人,并且可以浏览堆积如山的文档,为您的输入提供准确的响应。        在本系列中,我们将探索如何使用pre-trained的LLM创建一个聊天机器人,该聊

    2024年02月11日
    浏览(65)
  • Linux p14 组管理和权限管理

    【学习课程】:【【小白入门 通俗易懂】2021韩顺平 一周学会Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14share_source=copy_webvd_source=2c07d62293f5003c919b2df9b2e0549e Linux组: 在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件 有所有者、所在组、其它组的概念。

    2024年02月05日
    浏览(37)
  • 使用OpenCV与深度学习去除图像背景:Python实现指南

    第一部分:简介和OpenCV的背景去除 在现代的图像处理和计算机视觉应用中,背景去除是一个常见的需求。这不仅用于产品摄影和电商平台,还广泛应用于各种图像分析任务。在这篇文章中,我们将使用OpenCV和深度学习技术来实现此功能,并通过Python进行实现。本教程会介绍两

    2024年01月20日
    浏览(45)
  • K8S学习指南(2)-docker的基本使用

    Docker 是一款开源的容器化平台,允许开发者将应用程序及其依赖项打包为一个轻量级、可移植的容器。这种容器化技术使得应用程序在不同环境中能够更加一致、可靠地运行。本教程将深入介绍 Docker 的使用方法,包括容器的创建、管理、网络配置、数据卷使用以及 Docker C

    2024年02月04日
    浏览(43)
  • C# GUI编程入门指南:学习如何使用C#创建图形用户界面

    C# GUI编程入门指南:学习如何使用C#创建图形用户界面 在本文中,我们将介绍如何使用C#编写GUI程序。GUI(Graphical User Interface)是一种以图形方式呈现信息和操作功能的界面,它使得用户与计算机更加直观和友好。C#是一种强大的编程语言,它提供了丰富的库和工具来帮助我们

    2024年01月21日
    浏览(53)
  • 【通义千问】大模型Qwen GitHub开源工程学习笔记(1)-- 使用指南、依赖库和软件

    9月25日,阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。 立马就到了GitHub去fork。 GitHub: GitHub - QwenLM/Qwen: The official repo of Qwen (通义千问) chat pretrained large language model proposed by Alibaba Cloud. 官方的技术资料也下载了,看这里==https://qianwen-res.oss-cn-b

    2024年02月03日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包