TensorFlow进阶一(张量的范数、最值、均值、和函数、张量的比较)

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/

TensorFlow进阶一(张量的范数、最值、均值、和函数、张量的比较)

  • TensorFlow进阶一
    • 一、任务需求
    • 二、任务目标
          • 1、掌握张量的合并
          • 2、掌握张量的分割
          • 3、掌握张量的最值、均值、和函数
          • 4、掌握张量的比较
    • 三、任务环境
          • 1、python3.6
          • 2、tensorflow2.4
          • 3、jupyter
    • 四、任务实施过程
        • (三)、向量范数
        • (四)、最值、均值、和
        • (五)、张量比较
    • 五、任务小结

TensorFlow进阶一

一、任务需求

在介绍完张量的基本操作后,我们来进一步学习张量的进阶操作,如张量的合并与分割、范数统计、张量填充、张量限幅等,本节需要完成张量的合并(包括拼接和堆叠),张量的分割、向量范数、最值、均值、和,张量的比较等功能。

二、任务目标

1、掌握张量的合并
2、掌握张量的分割
3、掌握张量的最值、均值、和函数
4、掌握张量的比较

三、任务环境

1、python3.6
2、tensorflow2.4
3、jupyter

四、任务实施过程

(三)、向量范数

12、在 TensorFlow 中,可以通过 tf.norm(x, ord)求解张量的 L1、L2、∞等范数,其中参数ord 指定为 1、2 时计算 L1、L2 范数,指定为 np.inf 时计算∞ −范数

x = tf.ones([2,2])
tf.norm(x,ord=1) #计算L1范数

在这里插入图片描述

tf.norm(x,ord=2) #计算L2范数

<tf.Tensor: shape=(), dtype=float32, numpy=2.0>

import numpy as np
tf.norm(x,ord=np.inf) # 计算∞范数

在这里插入图片描述

(四)、最值、均值、和

13、考虑 shape 为[4,10]的张量,其中,第一个维度代表样本数量,第二个维度代表了当前样本分别属于10个类别的概率,需要求出每个样本的概率最大值,可以通过tf.reduce_max 函数实现

x = tf.random.normal([4,10]) # 模型生成概率
tf.reduce_max(x,axis=1) # 统计概率维度上的最大值

<tf.Tensor: shape=(4,), dtype=float32, numpy=array([1.8075018, 1.8042752, 1.0641811, 1.9087783], dtype=float32)>

在这里插入图片描述

14、返回长度为 4 的向量,分别代表了每个样本的最大概率值。同样求出每个样本概率的最小值

tf.reduce_min(x,axis=1)

<tf.Tensor: shape=(4,), dtype=float32, numpy=array([-0.4287228, -0.5215661, -1.9173664, -1.5540869], dtype=float32)>

15、求出每个样本的概率的均值

tf.reduce_mean(x,axis=1)

<tf.Tensor: shape=(4,), dtype=float32, numpy=array([ 0.4275422 , 0.2606017 , -0.19171332, 0.38828874], dtype=float32)>

16、当不指定 axis 参数时,tf.reduce_*函数会求解出全局元素的最大、最小、均值、和等数据。

x = tf.random.normal([4,10])
tf.reduce_max(x),tf.reduce_min(x),tf.reduce_mean(x)    

在这里插入图片描述

17、在求解误差函数时,通过 TensorFlow 的 MSE 误差函数可以求得每个样本的误差,需要计算样本的平均误差,此时可以通过 tf.reduce_mean 在样本数维度上计算均值

out = tf.random.normal([4,10]) # 模拟网络预测输出
y = tf.constant([1,2,2,0]) # 模拟真实标签
y = tf.one_hot(y,depth=10) # one-hot 编码
loss = tf.keras.losses.mse(y,out) # 计算每个样本的误差
loss = tf.reduce_mean(loss) # 平均误差,在样本数维度上取均值
loss # 误差标量

在这里插入图片描述

18、与均值函数相似的是求和函数 tf.reduce_sum(x, axis),它可以求解张量在 axis 轴上所有特征的和:

out = tf.random.normal([4,10])
tf.reduce_sum(out,axis=-1) # 求最后一个维度的和

<tf.Tensor: shape=(4,), dtype=float32, numpy=array([ 1.0680336, 1.31221 , 4.050804 , -1.6357648], dtype=float32)>

19、除了希望获取张量的最值信息,还希望获得最值所在的位置索引号,例如分类任务的标签预测,就需要知道概率最大值所在的位置索引号,一般把这个位置索引号作为预测类别。考虑 10 分类问题,我们得到神经网络的输出张量 out,shape 为[2,10],代表了 2 个样本属于 10 个类别的概率,由于元素的位置索引代表了当前样本属于此类别的概率,预测时往往会选择概率值最大的元素所在的索引号作为样本类别的预测值。

out = tf.random.normal([2,10])
out = tf.nn.softmax(out, axis=1) # 通过 softmax 函数转换为概率值
out

在这里插入图片描述
以第一个样本为例,可以看到,它概率最大的索引为𝑖 = 0,最大概率值为 0.1877。由于每个索引号上的概率值代表了样本属于此索引号的类别的概率,因此第一个样本属于 0 类的概率最大,在预测时考虑第一个样本应该最有可能属于类别 0。这就是需要求解最大值的索引号的一个典型应用

20、通过 tf.argmax(x, axis)和 tf.argmin(x, axis)可以求解在 axis 轴上,x 的最大值、最小值所在的索引号

pred = tf.argmax(out, axis=1) # 选取概率最大的位置

<tf.Tensor: shape=(2,), dtype=int64, numpy=array([0, 7])>

可以看到,这 2 个样本概率最大值都出现在索引 0 上,因此最有可能都是类别 0,我们可以将类别 0 作为这 2 个样本的预测类别。

(五)、张量比较

21、为了计算分类任务的准确率等指标,一般需要将预测结果和真实标签比较,统计比较结果中正确的数量来计算准确率。考虑 100 个样本的预测结果,通过 tf.argmax 获取预测类别

out = tf.random.normal([100,10])
out = tf.nn.softmax(out, axis=1) # 输出转换为概率
pred = tf.argmax(out, axis=1) # 计算预测值
pred

在这里插入图片描述
22、变量 pred 保存了这 100 个样本的预测类别值,我们与这 100 样本的真实标签比较

y = tf.random.uniform([100],dtype=tf.int64,maxval=10)
y
<tf.Tensor: shape=(100,), dtype=int64, numpy=
array([1, 3, 7, 0, 0, 2, 9, 6, 0, 3, 3, 4, 7, 8, 8, 3, 2, 9, 6, 0, 1, 6,8, 6, 1, 1, 2, 4, 7, 4, 9, 9, 7, 5, 6, 5, 4, 9, 2, 6, 0, 4, 3, 2,9, 0, 5, 8, 3, 3, 4, 4, 0, 3, 0, 4, 8, 4, 7, 9, 3, 6, 1, 4, 2, 5,1, 9, 9, 1, 1, 2, 7, 8, 9, 0, 7, 6, 1, 1, 2, 8, 1, 2, 6, 0, 8, 2,6, 1, 5, 8, 3, 0, 9, 0, 2, 3, 3, 5])>

23、即可获得代表每个样本是否预测正确的布尔类型张量。通过 tf.equal(a, b)(或 tf.math.equal(a,b),两者等价)函数可以比较这 2 个张量是否相等

out = tf.equal(pred,y) # 预测值与真实值比较,返回布尔类型的张量
out
<tf.Tensor: shape=(100,), dtype=bool, numpy=
array([False, False, False,  True, False, False, False, False, False,False, False, False, False, False, False, False, False, False,False, False, False, False, False, False, False, False, False,False, False, False,  True, False, False, False, False, False,False, False, False,  True, False, False, False, False, False,False, False, False, False, False,  True,  True, False, False,True, False, False, False, False, False, False, False,  True,False, False, False, False, False,  True, False, False, False,False, False, False, False, False, False, False, False,  True,False, False, False, False, False, False, False, False, False,False, False, False, False,  True, False, False, False, False,False])>

24、tf.equal()函数返回布尔类型的张量比较结果,只需要统计张量中 True 元素的个数,即可知道预测正确的个数。为了达到这个目的,我们先将布尔类型转换为整形张量,即 True 对应
为 1,False 对应为 0,再求和其中 1 的个数,就可以得到比较结果中 True 元素的个数

out = tf.cast(out, dtype=tf.float32) # 布尔型转 int 型
correct = tf.reduce_sum(out) # 统计 True 的个数
correct

在这里插入图片描述

五、任务小结

本节主要介绍了将多个张量在某个维度上合并为一个张量,张量的合并可以使用拼接(Concatenate)和堆叠(Stack)操作实现,拼接操作并不会产生新的维度,仅在现有的维度上合并,而堆叠会创建新维度。选择使用拼接还是堆叠操作来合并张量,取决于具体的场景是否需要创建新维度。合并操作的逆过程就是分割,将一个张量分拆为多个张量。在神经网络的计算过程中,经常需要统计数据的各种属性,如最值、最值位置、均值、范数等信息。由于张量通常较大,直接观察数据很难获得有用信息,通过获取这些张量的统计信息可以较轻松地推测张量数值的分布。为了计算分类任务的准确率等指标,一般需要将预测结果和真实标签比较,统计比较结果中正确的数量来计算准确率。通过本节需要掌握以下知识:

  • 掌握张量的合并
  • 掌握张量的分割
  • 掌握张量的最值、均值、和函数
  • 掌握张量的比较

–end–

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短视频评论ID批量爬虫提取获客软件|视频评论下载采集工具

短视频评论批量抓取软件&#xff1a;智能拓客&#xff0c;精准抓取用户反馈 主要功能一览 1. 智能抓取任务创建&#xff1a; 软件提供了任务创建功能&#xff0c;用户只需输入任务名称、搜索关键词以及评论监控词&#xff0c;即可开始智能抓取。不仅能够搜索关键词匹配的视频…

Gradio 最快创建Web 界面部署到服务器并演示机器学习模型,本文提供教学案例以及部署方法,避免使用繁琐的django

最近学习hugging face里面的物体检测模型&#xff0c;发现一个方便快捷的工具&#xff01; Gradio 是通过友好的 Web 界面演示机器学习模型的最快方式&#xff0c;以便任何人都可以在任何地方使用它&#xff01; 一、核心优势&#xff1a; 使用这个开发这种演示机器学习模型的…

就业班 第三阶段(负载均衡) 2401--4.19 day3

二、企业 keepalived 高可用项目实战 1、Keepalived VRRP 介绍 keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件&#xff0c;用来防止单点故障。 ​ keepalived工作原理keepalived是以VRRP协议为实现基础的&#xff0c;VRRP全称Virtual Router Redundan…

前端开发攻略---封装calendar日历组件,实现日期多选。可根据您的需求任意调整,可玩性强。

1、演示 2、简介 1、该日历组件是纯手搓出来的&#xff0c;没依赖任何组件库&#xff0c;因此您可以随意又轻松的改变代码&#xff0c;以实现您的需求。 2、代码清爽干净&#xff0c;逻辑精妙&#xff0c;您可以好好品尝。 3、好戏开场。 3、代码&#xff08;Vue3写法&#xff…

探索Web3:去中心化的互联网新时代

引言 在过去的几十年里&#xff0c;互联网已经改变了我们的生活方式、商业模式以及社交互动方式。然而&#xff0c;一个新的技术浪潮——Web3正在崭露头角&#xff0c;预示着一个去中心化的互联网新时代的来临。本文将深入探讨Web3技术的定义、特点以及其对未来互联网发展的影…

【数据结构-图】

目录 1 图2 图的定义和基本概念&#xff08;在简单图范围内&#xff09;3 图的类型定义4 图的存储结构4.1 邻接矩阵 表示法4.2 邻接表 表示法4.3 十字链表 表示法4.4 邻接多重表 表示法 5 图的遍历5.1 深度优先搜索-DFS 及 广度优先遍历-BFS 6 图的应用6.1 最小生成树6.1.1 克鲁…

vue cli3开发自己的插件发布到npm

具体流程如下&#xff1a; 1、创建一个vue项目 vue create project 2、编写组件 &#xff08;1&#xff09;新建一个plugins文件夹&#xff08;可自行创建&#xff09; &#xff08;2&#xff09;新建Button组件 &#xff08;3&#xff09;组件挂载&#xff0c;为组件提供 in…

Python绘制3D曲面图

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 探索Python中绘制3D曲面图的艺术 在数据可视化的世界中&#xff0c;3D曲面图是一种强大的工…

数据链路层(计算机网络,待完善)

0、前言 本文大多数图片都来自于 B站UP主&#xff1a;湖科大教书匠 的教学视频&#xff0c;对高军老师及其团队制作出这么优质的课程表示感谢。文章增加了部分个人理解&#xff0c;内容并不是对视频的静态化翻译。 1、概述 1.1、数据链路层在计算机网络体系中的位置 1.2、对…

Jenkins集成Terraform实现阿里云CDN自动刷新

在互联网业务中&#xff0c;CDN的应用已经成了普遍&#xff0c;SRE的日常需求中&#xff0c;CDN的刷新在前端需求逐渐中占了很大比例&#xff0c;并且比较琐碎。做为合格的SRE&#xff0c;把一切自动化是终极使命&#xff0c;而今天就分享通过JenkinsTerraform实现阿里云的CDN自…

CISSP通关学习笔记:共计 9 个章节(已完结)

1. 笔记说明 第 0 章节为开篇介绍&#xff0c;不包括知识点。第 1 - 8 章节为知识点梳理汇总&#xff0c;8 个章节的知识框架关系如下图所示&#xff1a; 2. 笔记目录 「 CISSP学习笔记 」0.开篇「 CISSP学习笔记 」1.安全与风险管理「 CISSP学习笔记 」2.资产安全「 CISSP…

机器学习/算法工程师面试题目与答案-深度学习部分1

机器学习/算法工程师面试题目与答案-深度学习部分 BatchNormalization的作用梯度消失循环神经网络&#xff0c;为什么好?什么是GroupConvolution什么是RNN神经网络中权重共享的是&#xff1f;神经网络激活函数&#xff1f;为什么在深度学习中常进行finetuning画GRU结构图什么是…

Flink CDC详解

文章目录 Flink CDC一 CDC简介1.1 CDC定义1.2 CDC应用场景1.3 CDC实现机制1.4 开源CDC工具对比 二 Flink CDC简介2.1 Flink CDC介绍2.2 Flink CDC Connector(连接器)2.3 Flink CDC && Flink版本2.4 Flink CDC特点 三 Flink CDC发展3.1 发展历程3.2 背景Dynamic Table &…

51单片机入门_江协科技_35~36_OB记录的自学笔记_AD与DA转换(XPT2046)

35. AD_DA 35.1. AD/DA介绍 •AD&#xff08;Analog to Digital&#xff09;&#xff1a;模拟-数字转换&#xff0c;将模拟信号转换为计算机可操作的数字信号 •DA&#xff08;Digital to Analog&#xff09;&#xff1a;数字-模拟转换&#xff0c;将计算机输出的数字信号转换…

系统设计 --- E2E Test System

系统设计 --- E2E Test System 什么是E2EE2E Architecture Example 什么是E2E E2E&#xff08;端到端&#xff09;测试是一种软件测试方法&#xff0c;旨在模拟真实的用户场景&#xff0c;测试整个应用程序或系统的端到端功能和交互流程。E2E 测试涵盖了从用户界面到后端系统的…

信息系统项目管理师论文考察范围预测

在2023年下半年实施机考之前&#xff0c;论文的范围还是比较好预测的&#xff0c;因为从历年考题来看&#xff0c;可以说十大管理领域考察的概率接近100%&#xff0c;而且有一定规律&#xff0c;比如说某个管理领域很久没考了&#xff0c;那么考察的概率就相对大一点&#xff0…

IDEA 全局查找 ctrl + shift + F 快捷键失效

全局查找&#xff1a;ctrl shift F 需要关闭微软输入法简体/繁体切换&#xff0c;不然被占用了无效 (装了搜狗输入法的同理,找一下是不是这个快捷键冲突了 ) 另外还有 IDEA 中 重构变量名 &#xff1a;shift F6 需要关闭微软输入法最新版本 ( 使用以前版本的微软输入法就没…

CSS渐变色理论与分类、文字渐变色方案、炸裂渐变色方案以及主流专业渐变色工具网站推荐

渐变色彩可以增加视觉层次感和动态效果&#xff0c;使网页界面更加生动有趣&#xff0c;吸引用户注意力。另外&#xff0c;相较于静态背景图片&#xff0c;CSS渐变无需额外的HTTP请求&#xff0c;减轻服务器负载&#xff0c;加快页面加载速度&#xff1b;同时CSS渐变能够根据容…

windows下git提交修改文件名大小写提交无效问题

windows系统不区分大小写&#xff0c;以及git提交忽略大小写&#xff0c;git仓库已存在文件A.js&#xff0c;本地修改a.js一般是没有提交记录的&#xff0c;需要手动copy一份出来A.js&#xff0c;再删除A.js文件提交仓库删除后&#xff0c;再提交修改后的a.js文件。 windows决…

C/C++程序设计实验报告4 | 函数实验

本文整理自博主本科大一《C/C程序设计》专业课的课内实验报告&#xff0c;适合C语言初学者们学习、练习。 编译器&#xff1a;gcc 10.3.0 ---- 注&#xff1a; 1.虽然课程名为C程序设计&#xff0c;但实际上当时校内该课的内容大部分其实都是C语言&#xff0c;C的元素最多可能只…