tensorflow数据相关总结----学习笔记(四)

标量

标量由只有一个元素的张量表示。 下面的代码将实例化两个标量,并执行一些熟悉的算术运算,即加法、乘法、除法和指数。

import tensorflow as tfx = tf.constant(3.0)
y = tf.constant(2.0)print(x + y)
print(x * y)
print(x / y)
print(x ** y)
"""
tf.Tensor(5.0, shape=(), dtype=float32)
tf.Tensor(6.0, shape=(), dtype=float32)
tf.Tensor(1.5, shape=(), dtype=float32)
tf.Tensor(9.0, shape=(), dtype=float32)
"""

向量

向量可以被视为标量值组成的列表。 这些标量值被称为向量的元素(element)或分量(component)。 当向量表示数据集中的样本时,它们的值具有一定的现实意义。

import tensorflow as tfx = tf.range(4)
print(x)
"""
tf.Tensor([0 1 2 3], shape=(4,), dtype=int32)
"""
# 可以通过下标引用向量的任一元素
x[n]

长度、维度和形状

向量只是一个数字数组,就像每个数组都有一个长度一样,每个向量也是如此。
形状(shape)是一个元素组,列出了张量沿每个轴的长度(维数)。 对于只有一个轴的张量,形状只有一个元素。
维度(dimension)这个词在不同上下文时往往会有不同的含义,这经常会使人感到困惑。 为了清楚起见,我们在此明确一下: 向量或轴的维度被用来表示向量或轴的长度,即向量或轴的元素数量。 然而,张量的维度用来表示张量具有的轴数。 在这个意义上,张量的某个轴的维数就是这个轴的长度。

import tensorflow as tfx = tf.range(4)
print(len(x))
print(x.shape)
"""
4
(4,)
"""

矩阵

正如向量将标量从零阶推广到一阶,矩阵将向量从一阶推广到二阶。 矩阵,我们通常用粗体、大写字母来表示 (例如,XYZ), 在代码中表示为具有两个轴的张量。

import tensorflow as tfA = tf.reshape(tf.range(20), (5, 4))
print(A)
"""
tf.Tensor(
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11][12 13 14 15][16 17 18 19]], shape=(5, 4), dtype=int32)
"""
#可以通过下班获取矩阵中的元素
print(A[1][2])
"""
tf.Tensor(6, shape=(), dtype=int32)
"""
# 可以使用transpose进行矩阵转置,改变矩阵的行和列
print(tf.transpose(A))
"""
tf.Tensor(
[[ 0  4  8 12 16][ 1  5  9 13 17][ 2  6 10 14 18][ 3  7 11 15 19]], shape=(4, 5), dtype=int32)
"""

张量

就像向量是标量的推广,矩阵是向量的推广一样,我们可以构建具有更多轴的数据结构。 张量(张量”指代数对象)是描述具有任意数量轴的n维数组的通用方法。

import tensorflow as tfX = tf.reshape(tf.range(24), (2, 3, 4))
print(X)
"""
tf.Tensor(
[[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]][[12 13 14 15][16 17 18 19][20 21 22 23]]], shape=(2, 3, 4), dtype=int32)
"""

将张量乘以或加上一个标量不会改变张量的形状,其中张量的每个元素都将与标量相加或相乘。

import tensorflow as tfa = 2
X = tf.reshape(tf.range(24), (2, 3, 4))
print(a + X)
print((a * X))
"""
tf.Tensor(
[[[ 2  3  4  5][ 6  7  8  9][10 11 12 13]][[14 15 16 17][18 19 20 21][22 23 24 25]]], shape=(2, 3, 4), dtype=int32)
tf.Tensor(
[[[ 0  2  4  6][ 8 10 12 14][16 18 20 22]][[24 26 28 30][32 34 36 38][40 42 44 46]]], shape=(2, 3, 4), dtype=int32)
"""

降维

我们可以对任意张量进行的一个有用的操作是计算其元素的和。

import tensorflow as tfx = tf.range(4, dtype=tf.float32)
print(x)
print(tf.reduce_sum(x))
"""
tf.Tensor([0. 1. 2. 3.], shape=(4,), dtype=float32)
tf.Tensor(6.0, shape=(), dtype=float32)
"""

默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。 我们还可以指定张量沿哪一个轴来通过求和降低维度。
指定axis=0。 由于输入矩阵沿0轴降维以生成输出向量,因此输入轴0的维数在输出形状中消失。

import tensorflow as tfA = tf.reshape(tf.range(20, dtype=tf.float32), (5, 4))
A_sum_axis0 = tf.reduce_sum(A, axis=0)
print(A)
print(A_sum_axis0)
print(A_sum_axis0.shape)
"""
tf.Tensor(
[[ 0.  1.  2.  3.][ 4.  5.  6.  7.][ 8.  9. 10. 11.][12. 13. 14. 15.][16. 17. 18. 19.]], shape=(5, 4), dtype=float32)
tf.Tensor([40. 45. 50. 55.], shape=(4,), dtype=float32)
(4,)
"""

指定axis=1将通过汇总所有列的元素降维(轴1)。因此,输入轴1的维数在输出形状中消失。

import tensorflow as tfA = tf.reshape(tf.range(20, dtype=tf.float32), (5, 4))
A_sum_axis0 = tf.reduce_sum(A, axis=1)
print(A)
print(A_sum_axis0)
print(A_sum_axis0.shape)
"""
tf.Tensor(
[[ 0.  1.  2.  3.][ 4.  5.  6.  7.][ 8.  9. 10. 11.][12. 13. 14. 15.][16. 17. 18. 19.]], shape=(5, 4), dtype=float32)
tf.Tensor([ 6. 22. 38. 54. 70.], shape=(5,), dtype=float32)
(5,)
"""

沿着行和列对矩阵求和,等价于对矩阵的所有元素进行求和。

import tensorflow as tfA = tf.reshape(tf.range(20, dtype=tf.float32), (5, 4))
A_sum_axis = tf.reduce_sum(A, axis=[0, 1])  # 结果和tf.reduce_sum(A)相同
A_sum = tf.reduce_sum(A)
print(A_sum_axis)
print(A_sum)
"""
tf.Tensor(190.0, shape=(), dtype=float32)
"""

非降维求和

在使用函数计算总和时需要保持轴数不变。

import tensorflow as tfA = tf.reshape(tf.range(20, dtype=tf.float32), (5, 4))
sum_A = tf.reduce_sum(A, axis=1, keepdims=True)
print(A)
print(sum_A)
"""
tf.Tensor(
[[ 0.  1.  2.  3.][ 4.  5.  6.  7.][ 8.  9. 10. 11.][12. 13. 14. 15.][16. 17. 18. 19.]], shape=(5, 4), dtype=float32)
tf.Tensor(
[[ 6.][22.][38.][54.][70.]], shape=(5, 1), dtype=float32)
"""

如果我们想沿某个轴计算A元素的累积总和, 比如axis=0(按行计算),可以调用cumsum函数。 此函数不会沿任何轴降低输入张量的维度。

import tensorflow as tfA = tf.reshape(tf.range(20, dtype=tf.float32), (5, 4))
print(A)
print(tf.cumsum(A, axis=0))
"""
tf.Tensor(
[[ 0.  1.  2.  3.][ 4.  5.  6.  7.][ 8.  9. 10. 11.][12. 13. 14. 15.][16. 17. 18. 19.]], shape=(5, 4), dtype=float32)
tf.Tensor(
[[ 0.  1.  2.  3.][ 4.  6.  8. 10.][12. 15. 18. 21.][24. 28. 32. 36.][40. 45. 50. 55.]], shape=(5, 4), dtype=float32)
"""

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习系列70:模型部署torchserve

1. 流程说明 ts文件夹下, 从launcher.py进入,执行jar文件。 入口为model_server.py的start()函数。内容包含: 读取args,创建pid文件 找到java,启动model-server.jar程序,同时读取log-config文件&#xff…

【Qt】Qt容器和STL容器的区别

1、简述 Qt容器和STL容器略有不同,作为一个Qter,应该知道它们之间的异同。 Qt容器官网介绍:https://doc.qt.io/qt-5/containers.html STL容器官网介绍:https://zh.cppreference.com/w/cpp/container 2、Qt容器和STL容器的对应关系 注意:QList 与 std::list 无关,QSet …

华为云依赖引入错误

问题:记录一次项目加在华为云依赖错误,如下: 错误信息:Could not find artifact com.huawei.storage:esdk-obs-java:pom:3.1.2.1 in bintray-qcloud-maven-repo (https://dl.bintray.com/qcloud/maven-repo/) 找到本地仓库&#…

随机森林+shap算法进行特征贡献性分析-完整代码数据可直接运行

直接看结果: 代码: import os import numpy as np from collections import Counter import random import pandas as pd # 导入必要的库 import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import R…

【零基础必看的前端教程】——JavaScript(八)函数

欢迎大家打开前端的新篇章——JavaScript,JavaScript与HTML、CSS合称为前端三大件,JavaScript是前端的重中之重,小洪将继续以零基础视角,带你循序渐进学习前端知识,一看就懂,小白也能转行做前端&#xff01…

Django Web开发:构建强大RBAC权限管理系统的实战指南

文章目录 前言一、rbac 基于角色的权限管理1.acl 基于用户的权限管理2.rbac 基于角色的权限管理 二、应用示例1.配置角色资源a.分析表b.核心逻辑c.使用transfer在前端实现资源配置d.页面效果 2.登录时获取对应权限a.员工登录b.中间件c.前端请求d.效果图 3.前端-路由守卫-页面权…

1207. 有趣的数字图形IV

问题描述 输入一个整数 𝑛 ( 𝑛≤12 ),打印出如下要求的方阵: 除掉右上到左下对角线上的数外的右下半个区域中每个元素等于左边的和上面的元素之和。每个元素场宽为 5 。左上半个区域为空。 输入 一个整…

前端学习7——自学习梳理

​​​​​​jQuery 教程 | 菜鸟教程jQuery 教程 jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 本章节的每一篇都包含了在线实例 通过本站的在线编辑器,你可以在线运行修改后的代码,并查看运行结果。 实例…

【网络】网络聊天室udp

网络聊天室udp 一、低耦合度代码1、代码2、测试结果 二、高耦合度代码1、服务端小改(1)维护一个unordered_map用户列表(2)服务端代码(3)客户端不改的情况下结果展示 2、大改客户端(udp全双工用多…

stats 监控 macOS 系统

Stats 监控 macOS 系统 CPU 利用率GPU 利用率内存使用情况磁盘利用率网络使用情况电池电量 brew install stats参考 stats github

pythonGame-实现简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。 使用到的库函数: import pygame import time import random 游戏源码: import pygame import time import randompygame.init()white (255, 255, 255) yellow (255, 255, 102) black (0, 0, 0) red (213, 50, 80…

封装和桥接Unity 协程体系

简介 协程(Coroutine)在C#中是一种特殊的函数,它允许开发者编写可以暂停执行并在未来某个时刻恢复执行的代码块。协程通常用于实现异步操作,如延时执行、等待某个事件发生、或者分段执行复杂的任务。在Unity游戏引擎中&#xff0c…

go-kratos 学习笔记(7) 服务发现服务间通信grpc调用

服务发现 Registry 接口分为两个,Registrar 为实例注册和反注册,Discovery 为服务实例列表获取 创建一个 Discoverer 服务间的通信使用的grpc,放到data层,实现的是从uses服务调用orders服务 app/users/internal/data.go 加入 New…

上传文件传参 pc端vue的formData

formData let formData new FormData(); formData.append("file", blob, ref ".png"); //添加参数并且重新命名文件名称 if(ref.toString().indexOf(qrcode) > 0) formData.append(noStbg, true)//添加参数 uploadType(formData, sour…

《人工智能大语言模型技术发展研究报告(2024)》【下载】

《人工智能大语言模型技术发展研究报告(2024)》下载 自2023年起,大模型技术产品的快速迭代和升级,已经成为全球科技竞争的关键因素。由中国软件评测中心发布的《人工智能大语言模型技术发展研究报告(2024)》…

LLM - 理解 Transformer 的位置编码 sin cos 的作用与原理

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/140697827 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Transformer 模型中的位置编码是关键技术,通过为每个词嵌入向量添加位…

哈希表相关的力扣题和讲解和Java、C++常用的数据结构(哈希法)

20240725 一、什么时候适用什么样的结构。1.java中1.1 HashSet:1.2 TreeSet:1.3 LinkedHashSet:1.4 HashMap:1.5 TreeMap:1.6 LinkedHashMap:1.7 总结 2. c中2.1 std::unordered_set:2.2 std::s…

亚信安慧AntDB亮相PostgreSQL中国技术大会,获“数据库最佳应用奖”并分享数据库应用实践

7月12日,第13届PostgreSQL中国技术大会在杭州顺利举办,亚信安慧AntDB数据库荣获“数据库最佳应用奖”。大会上,亚信安慧AntDB数据库同事带来《基于AntDB的CRM系统全域数据库替换实践》和《亚信安慧AntDB数据库运维之路》两场精彩演讲&#xf…

vue3前端架构---打包配置

最近看到几篇vue3配置项的文章,转载记录一下 Vue3.2 vue/cli-service 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案-CSDN博客文章浏览阅读2k次,点赞8次,收藏9次。Vue3.2 vue/cli-service 打包 chunk-vendors.js 文件过大导致页…

【企业级开发模型】Git分支设计模型 | 企业级项目挂历实战_准备工作开发场景实操

目录 3.Git分支设计模型 3.1master分支 3.2release分支 3.3develop分支 3.4feature分支 3.5hotfix分支 4.企业级项目挂历实战_准备工作&开发场景实操学习文档 3.Git分支设计模型 对于我们开发人员来说,对于不同的场景/环境,来设计分支模型。…