首页 > 其他分享 >PyTorch:快速了解Tensor的连续性

PyTorch:快速了解Tensor的连续性

时间:2024-09-18 23:54:07浏览次数:8  
标签:连续性 tensor PyTorch 按行 一维 print 底层 Tensor

目录

1、引言

2、底层数据的存储

3、按行优先一维展开


1、引言

Tensor的连续性是指其底层一维数组元素的存储顺序与按行优先一维展开的元素顺序是否一致。

2、底层数据的存储

  Tensor的底层数据在内存上是连续存储的,通过代码说明如下:

用到的python函数与方法

x.data_ptr() #该函数返回Tensor数据的实际内存的起始地址
id(x) #该函数返回x在python内存管理系统中的唯一标识符

初始化2×3的tensor,使用data_ptr()方法把每一个元素的实际内存输出到列表中,由于元素是int64,int64占用8个字节(64位),连续存储地址间隔为8。

x=torch.tensor([[1,2,3],[4,5,6]])
print(x)
tensor([[1, 2, 3],
        [4, 5, 6]])
print([i.data_ptr() for i in x.flatten()])
[1497599557248, 1497599557256, 1497599557264, 1497599557272, 1497599557280, 1497599557288]

这些地址间隔为8,说明元素连续存储。

3、按行优先一维展开

通过x转置得到新Tensor变量y

y=x.T
print(y)
tensor([[1, 4],
        [2, 5],
        [3, 6]])

通过.storage()查看底层数据,通过.flatten()按行优先一维展开,通过.is_contiguous()判断是否连续

下面测试中:

        1、x按行优先一维展开的数据视图与底层数据顺序一致,x是连续的

        2、y按行优先一维展开的数据视图与底层数据顺序不一致,y不是连续的

        3、x与y共用同一底层数据,起始地址都是1497599557248

        4、x与y两个id()不同

总结:

        1和2证实连续性判定的;

        3和4说明x与y是不同的Tensor,但是共用相同的底层数据,进一步体现了Tensor的内部结构。

print(x.flatten())
print(x.storage())
print(id(x))
print(x.data_ptr())
print(x.is_contiguous())
tensor([1, 2, 3, 4, 5, 6])
 1
 2
 3
 4
 5
 6
[torch.storage._TypedStorage(dtype=torch.int64, device=cpu) of size 6]
1497563980128
1497599557248
True
print(y.flatten())
print(y.storage())
print(id(y))
print(y.data_ptr())
print(y.is_contiguous())
tensor([1, 4, 2, 5, 3, 6])
 1
 2
 3
 4
 5
 6
[torch.storage._TypedStorage(dtype=torch.int64, device=cpu) of size 6]
1497671954928
1497599557248
False

标签:连续性,tensor,PyTorch,按行,一维,print,底层,Tensor
From: https://blog.csdn.net/liumaoshen/article/details/142345194

相关文章

  • BayesianLSTM PawaritL 使用PyTorch中的贝叶斯LSTM进行能源消耗预测,贝叶斯神经网络仅
    https://colab.research.google.com/github/PawaritL/BayesianLSTM/blob/master/Energy_Consumption_Predictions_with_Bayesian_LSTMs_in_PyTorch.ipynb#EnergyConsumptionPredictionswithBayesianLSTMsinPyTorchAuthor:PawaritLaosunthara内容:请点击上面的在Col......
  • python 深度神经网络训练,pytorch ,tensorflow paddle大模型训练中损失突然增大的原因
    在机器学习和深度学习的训练过程中,损失函数的数值突然变高可能是由多种因素引起的。以下是一些可能的原因和相应的解决方案:1.**学习率设置不当**:如果学习率过高,可能会导致模型在优化过程中跳过最小值,甚至导致模型发散。相反,如果学习率过低,则可能导致模型训练速度过慢,甚至停滞......
  • 《深度学习》PyTorch框架 优化器、激活函数讲解
    目录一、深度学习核心框架的选择    1、TensorFlow        1)概念        2)优缺点    2、PyTorch                1)概念        2)优缺点    3、Keras           ......
  • 《深度学习》PyTorch 常用损失函数原理、用法解析
    目录一、常用损失函数1、CrossEntropyLoss(交叉熵损失)        1)原理    2)流程        3)用法示例2、L1Loss(L1损失/平均绝对误差)    1)原理        2)用法示例3、NLLLoss(负对数似然损失)    1)原理    2)用法示例......
  • YOLOV8 det 多batch TensorRT 推理(python )
    由于我当前的项目需求是推理四张,所以,demo部分也是基于4张进行演示的,不过基于此套路,可以实现NCHW的任意尺度推理,推理代码如下:importnumpyasnpfromnumpyimportndarrayfromtypingimportList,Tuple,UnionfrommodelsimportTRTModule#isort:skipimportar......
  • Python 课程15-PyTorch
    前言PyTorch是一个开源的深度学习框架,由Facebook开发,广泛应用于学术研究和工业领域。与TensorFlow类似,PyTorch提供了强大的工具用于构建和训练深度学习模型。PyTorch的动态计算图和灵活的API使得它特别适合研究和实验。它还支持GPU加速,适用于构建复杂的神经网络。......
  • 孙怡带你深度学习(2)--PyTorch框架认识
    文章目录PyTorch框架认识1.Tensor张量定义与特性创建方式2.下载数据集下载测试展现下载内容3.创建DataLoader(数据加载器)4.选择处理器5.神经网络模型构建模型6.训练数据训练集数据测试集数据7.提高模型学习率总结PyTorch框架认识PyTorch是一个由Facebook......
  • 第J3-1周:DenseNet算法 实现乳腺癌识别(pytorch)
    >-**......
  • 2024.9最新:CUDA安装,pytorch库安装
    目录一、CUDA安装1.查看自己电脑适配的CUDA的最高版本2.安装CUDA3.检查环境变量是否配置,安装是否成功二、pytorch库安装1.pytorch库下载2.选择合适的版本3.查看版本一、CUDA安装1.查看自己电脑适配的CUDA的最高版本在命令提示符里输入nvidia-smi表格右上角显示的C......
  • 一个使用 PyTorch 实现的中文聊天机器人对话生成模型916
    这是一个使用PyTorch实现的中文聊天机器人对话生成模型。1数据准备代码假设有两个文件:questions.txt和answers.txt,它们分别包含输入和输出序列。load_data函数读取这些文件并返回一个句子列表。build_vocab函数通过遍历句子来构建词汇表字典word2index和index2......