【深度学习_TensorFlow】张量排序、填充与复制、张量限幅​

这篇具有很好参考价值的文章主要介绍了【深度学习_TensorFlow】张量排序、填充与复制、张量限幅​。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

这篇文章就将对tensor的一些基础操作进行最终讲解,下篇文章就开始学习神经网络,正式进入深度学习!


写在中间

一、张量排序( tf.sort()、tf.argsort()、tf.math.top_k() )

tf.sort (tensor, axis, direction)用于对张量中的值进行排序

  • tensor:表示要进行排序的张量。

  • axis:这是一个可选的参数,用于指定沿着哪个轴进行排序。如果 axis 为 None,则沿着最后一个轴进行排序。默认值为 -1。

  • direction:这是一个可选的参数,用于指定排序的方向。如果 directionASCENDING,则按照升序排序;如果为 DESCENDING,则按照降序排序。默认值为升序排列。


tf.argsort (tensor, axis, direction)用于对张量中的值进行排序并返回排序后的索引。

  • tensor: 一个 tensor,表示要进行排序的值。

  • axis: 可选参数,一个整数或一维整数张量,指定要对哪个轴进行排序。默认值为 -1,表示对最后一个轴进行排序。

  • direction: 这是一个可选的参数,用于指定排序的方向。如果 directionASCENDING,则按照升序排序;如果为 DESCENDING,则按照降序排序。默认值为升序排列。


tf.math.top_k(tensor, k, sorted)用于查找输入张量中数值最大的前几个元素及其索引。

  • tensor: 表示要进行排序的张量。

  • k: 一个整数,表示要找到数值最大的前几个元素。k 必须大于零。

  • sorted: 一个布尔值,默认为 True。如果为 True,则返回的结果按照值从高到低排序;如果为 False,则按照值从低到高排序。

返回值:包含两个 Tensor

  • values: 包含输入张量中数值最大的前 k 个元素。

  • indices: 包含输入张量中数值最大的前 k 个元素的索引。


示例

import tensorflow as tf
tensor = tf.random.uniform([3, 3], maxval=10, dtype=tf.int32)
print(tensor)  # 原张量
# [[5 4 0]
#  [1 3 9]
#  [3 9 4]]
tensor1 = tf.sort(tensor)
print(tensor1)  # 升序后张量
# [[0 4 5]
#  [1 3 9]
#  [3 4 9]]
tensor2 = tf.sort(tensor, direction='DESCENDING')
print(tensor2)  # 降序后张量
# [[5 4 0]
#  [9 3 1]
#  [9 4 3]]
index = tf.argsort(tensor)
print(index)  # 升序标记
# [[2 1 0]
#  [0 1 2]
#  [0 2 1]]

res = tf.math.top_k(tensor, 2)  # k = 2
print(res.indices, res.values)  # 较大值的的下标、前两个较大值
# [[0 1]
#  [2 1]
#  [1 2]]

# [[5 4]
#  [9 3]
#  [9 4]]

二、张量填充与复制(tf.pad()、tf.tile())

tf.pad(tensor, paddings, mode='CONSTANT', constant_values=0)

  • tensor: 需要添加填充的张量。

  • paddings: 一个二维张量,表示在 tensor 的四个边缘(上、下、左、右)添加的填充大小。

mode: 指定填充模式,参数可以取以下值:

  • 'CONSTANT':表示使用一个固定的常数值作为填充值。

  • 'REFLECT':表示使用反射填充。反射填充会将边缘值映射到填充区域的相应位置。例如,如果填充大小为 2,那么边缘的第一个值会映射到第二个填充值,边缘的第二个值会映射到第一个填充值。

  • 'SYMMETRIC':表示使用对称填充。对称填充会将边缘值映射到填充区域的中心。例如,如果填充大小为 2,那么边缘的第一个值会映射到第二个填充值的中间位置,边缘的第二个值会映射到第一个填充值的中间位置。

  • constant_values: 当 mode'CONSTANT' 时,此参数指定填充值。默认值为 0。


tf.tile(tensor, multiples) 用于将一个张量沿特定轴多次复制。

  • tensor:需要进行复制的张量。

  • multiples:一个与tensor 张量形状相同的一维整数张量,表示 tensor 张量在各个轴上需要复制的次数。


示例

import tensorflow as tf
# 创建全为1的 3×3 张量
tensor = tf.ones([3, 3])
print(tensor)
# [[1. 1. 1.]
#  [1. 1. 1.]
#  [1. 1. 1.]]

# 在行、列维度的上下、左右分别填充默认数字0
tensor1 = tf.pad(tensor, [[1, 1], [1, 1]])
print(tensor1)
# [[0. 0. 0. 0. 0.]
#  [0. 1. 1. 1. 0.]
#  [0. 1. 1. 1. 0.]
#  [0. 1. 1. 1. 0.]
#  [0. 0. 0. 0. 0.]]

# 对原张量,在第一个维度上不复制,第二个维度上复制2倍
tensor2 = tf.tile(tensor, [1, 2])
print(tensor2)
# [[1. 1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1. 1.]]

三、张量限幅(tf.clip_by_value)

tf.clip_by_value(tensor, clip_value_min, clip_value_max) 用于将张量中的值限制在一个指定的范围内。

  • tensor: 一个 TensorFlow 张量。

  • clip_value_min: 指定允许的最小值。

  • clip_value_max: 指定允许的最大值。


示例

import tensorflow as tf
tensor = tf.range(10)
print(tensor)
# [0 1 2 3 4 5 6 7 8 9]

# 将所有值限制在最小值与最大值之间,小于最小值的返回最小值,大于最大值的返回最大值
tensor1 = tf.clip_by_value(tensor, 2, 8)
print(tensor1)
# [2 2 2 3 4 5 6 7 8 8]

写在最后

👍🏻点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!

文章来源地址https://www.toymoban.com/news/detail-577616.html

到了这里,关于【深度学习_TensorFlow】张量排序、填充与复制、张量限幅​的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【深度学习】pytorch——Tensor(张量)详解

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ Tensor,又名张量。它可以是一个数(标量)、一维数组(向量)、二维数组(矩阵)和更高维的数组(高阶数据)。Tensor和Numpy的ndarrays类似,但PyTorch的tensor支持GPU加速。 官方文档 : https://pytorch.org/docs/stable/tensors.html

    2024年02月06日
    浏览(34)
  • 深度学习 pytorch的使用(张量2)

    tensor([[7, 6, 9, 4, 6],         [1, 9, 0, 9, 2],         [5, 7, 1, 7, 4],         [1, 2, 7, 2, 1]]) tensor([7, 6, 9, 4, 6]) tensor([7, 1, 5, 1]) tensor([6, 0]) tensor([[7, 6],         [1, 9],         [5, 7]]) tensor([[5, 7],         [1, 2]]) tensor([[7, 6, 9, 4, 6],         [1, 2, 7, 2, 1]]) tensor([[6, 4],         [9, 9],  

    2024年01月23日
    浏览(37)
  • 深度学习中标量,向量,矩阵和张量

    1.标量(Scalar) 只有大小没有方向,可用实数表示的一个量 2.向量(Vector) 可以表示大小和方向的量 3.矩阵(Matrix) m行n列,矩阵中的元素可以是数字也可以是符号,在深度学习中一般是二维数组 4.张量(Tensor) 用来表示一些向量、标量和其他张量之间的线性关系的多线性函数,这些线

    2024年02月15日
    浏览(30)
  • 深度学习 pytorch的使用(张量1)

     tensor(10) tensor([[-1.0923, -0.0842,  1.5959],         [ 0.4562,  1.0242,  0.0691]], dtype=torch.float64) tensor([[10., 20., 30.],         [40., 50., 60.]]) --------------------------------------------------  tensor([[-1.4189e-09,  1.7614e-42,  0.0000e+00],         [ 0.0000e+00,  0.0000e+00,  0.0000e+00]]) tensor([10.]) tensor([10., 20

    2024年01月22日
    浏览(30)
  • 【深度学习】S1 预备知识 P1 张量

    张量(Tensor)是深度学习中用于表示和处理多维数据的数据结构。张量与 Numpy 类似,但是不同的是深度学习框架专门为张量提供了丰富的操作API,包括创建张量、数据转换、数学运算、索引和切片等,使张量可以使用 GPU 加速,大大提高处理大量数据时的计算速度;同时提供

    2024年02月21日
    浏览(24)
  • 深度学习标量、向量、矩阵、张量之间的区别与联系

    前言 深度学习 的表现之所以能够超过传统的机器学习算法离不开神经网络,然而神经网络最基本的数据结构就是 向量 和 矩阵 , 神经网络 的输入是向量,然后通过每个矩阵对向量进行线性变换,再经过激活函数的非线性变换,通过层层计算最终使得 损失函数的最小化 ,完

    2024年02月16日
    浏览(22)
  • 现代C++中的从头开始深度学习【2/8】:张量编程

            初学者文本 :此文本需要入门级编程背景和对机器学习的基本了解。 张量是在深度学习算法中表示数据的主要方式。它们广泛用于在算法执行期间实现输入、输出、参数和内部状态。         在这个故事中,我们将学习如何使用特征张量 API 来开发我们的C+

    2024年02月13日
    浏览(23)
  • 【PyTorch与深度学习】2、PyTorch张量的运算API(上)

    课程地址 最近做实验发现自己还是基础框架上掌握得不好,于是开始重学一遍PyTorch框架,这个是课程笔记,这个课还是讲的简略,我半小时的课听了一个半小时。 (1) chunk :将一个张量分割为特定数目的张量,每个块都是输入张量的视图。 按维度0分割: 运行结果: b=

    2024年04月29日
    浏览(32)
  • 基于深度学习方法与张量方法的图像去噪相关研究

    目录 1 研究现状 1.1 基于张量分解的高光谱图像去噪 1.2 基于深度学习的图像去噪算法 1.3 基于深度学习的高光谱去噪 1.4 小结 2 基于深度学习的图像去噪算法 2.1 深度神经网络基本知识 2.2 基于深度学习的图像去噪网络 2.3 稀疏编码 2.3.1 传统稀疏编码 2.3.2 群稀疏编码  2.3.3 卷积

    2024年02月16日
    浏览(32)
  • (六)人工智能应用--深度学习原理与实战--理解张量与运算图

    Tensorflow名称中的Tensor即张量,不仅仅是Tensorflow,几乎所有的深度学习平台都以张量为基本的数据结构。简单来说,张量就是多维数组,本质上是一种数据容器,它可以有任意维度,比如矩阵就是二维张量(二维数组)。 深度学习中使用张量来表示数据,计算图是由张量和张量

    2024年02月15日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包