张量的分割

简介: 【8月更文挑战第18天】张量的分割。

张量的分割
TensorFlow中,张量分割的操作主要包括:
tf.unstack():将张量按照特定维度分解。
tf.split():将张量按照特定维度划分为指定的分数。

与tf.unstack()相比,tf.split()更佳灵活。
tf.unstack(value,num=None,axis=0,name='unstack'):
value:输入张量;
num:表示输出含有num个元素的列表,num必须和指定维度内元素的个数相等。通常可以忽略不写这个参数。
axis:指明根据数据的哪个维度进行分割;
name:操作名称。

代码:

按照第一个维度对数据进行分解,分解后的数据以列表形式输出。

tf.unstack(stacked_sample_1,axis=0)

输出:
[<tf.Tensor: shape=(100, 100, 3), dtype=float32, numpy=
array([[[ 0.0665694 , 0.7110351 , 1.907618 ],
[ 0.84416866, 1.5470593 , -0.5084871 ],
[-1.9480026 , -0.9899087 , -0.09975405],
...,

tf.split(value, num_or_size_splits, axis=0):
value:输入张量;
num_or_size_splits:准备切成几份
axis:指明根据数据的哪个维度进行分割。

tf.split()的分割方式有两种:

  1. 如果num_or_size_splits 传入的是一个整数,那直接在axis=D这个维度上把张量平均切分成几个小张量。
  2. 如果num_or_size_splits 传入的是一个向量,则在axis=D这个维度上把张量按照向量的元素值切分成几个小张量。

代码:
import numpy as np
split_sample_1 = tf.random.normal([10,100,100,3])
print("原始数据的尺寸为:",split_sample_1.shape)
splited_sample_1 = tf.split(split_sample_1, num_or_size_splits=5,axis=0)
print("当m_or_size_splits=10,分割后数据的尺寸为:",np.shape(splited_sample_1))
splited_sample_2 = tf.split(split_sample_1, num_or_size_splits=[3,5,2],axis=0)
print("当num_or_size_splits=[3,5,2],分割后数据的尺寸分别为:",
np.shape(splited_sample_2[0]),
np.shape(splited_sample_2[1]),
np.shape(splited_sample_2[2]))

输出:
原始数据的尺寸为: (10, 100, 100, 3)
当m_or_size_splits=10,分割后数据的尺寸为: (5, 2, 100, 100, 3)
当num_or_size_splits=[3,5,2],分割后数据的尺寸分别为: (3, 100, 100, 3) (5, 100, 100, 3) (2, 100, 100, 3)

相关文章
|
2月前
|
TensorFlow 算法框架/工具 Python
张量的分割
【8月更文挑战第17天】张量的分割。
18 2
|
2月前
|
TensorFlow 算法框架/工具
张量的拼接
【8月更文挑战第18天】张量的拼接。
12 2
|
3月前
|
机器学习/深度学习 算法 计算机视觉
【YOLOv10改进 -卷积Conv】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
4月前
|
存储 机器学习/深度学习 PyTorch
Pytorch-张量形状操作
PyTorch中,张量形状操作至关重要,如reshape用于改变维度而不变元素,transpose/permute用于维度交换,view改形状需内存连续,squeeze移除单维度,unsqueeze添加维度。这些函数帮助数据适应神经网络层间的转换。例如,reshape能调整数据适配层的输入,transpose用于矩阵转置或多维排列,而squeeze和unsqueeze则用于处理单维度。理解并熟练运用这些工具是深度学习中必要的技能。
|
5月前
TF-IDF 怎样将用单词权重的向量表示一个文档
TF-IDF 怎样将用单词权重的向量表示一个文档
52 1
|
5月前
|
机器学习/深度学习 PyTorch TensorFlow
PyTorch使用一维卷积对时间序列数据分类
PyTorch使用一维卷积对时间序列数据分类
263 0
|
机器学习/深度学习 索引
深度学习基础:标量、向量、矩阵、张量
深度学习基础:标量、向量、矩阵、张量
908 0
深度学习基础:标量、向量、矩阵、张量
|
资源调度 PyTorch 算法框架/工具
pytorch 如何生成指定位置、尺度参数的随机高斯矩阵,并指定这个随机矩阵的形式
在上述代码中,我们使用 torch.normal(mean=mu, std=sigma, size=(m, n)) 函数直接生成了一个形状为 (m, n) 的随机高斯矩阵 data,其中 mean 参数指定了均值,std 参数指定了标准差。 需要注意的是,与 torch.randn() 不同,torch.normal() 生成的是具有指定均值和标准差的高斯分布,因此生成的随机矩阵不一定是标准正态分布。如果需要生成标准正态分布随机矩阵,可以将 mean 参数设置为 0,std 参数设置为 1。
1141 1
|
并行计算 安全 异构计算
pytroch取张量数据
pytroch取张量数据
177 1
pytroch取张量数据
|
PyTorch 算法框架/工具
torch,如何将两个二维张量,按照第一维度,合并
在这个例子中,torch.cat() 函数的第一个参数是一个列表,包含要拼接的张量 x 和 y,第二个参数是拼接的维度,即第一维度。拼接后的张量 z 的形状为 (6, 4),因为两个原始张量的第一维度都是 3,拼接后就变成了 6。
718 0