PyTorch reshape和view的区别

简介: PyTorch reshape和view的区别
a1=torch.arange(12)
b1=a1.reshape(2,6)
c1=a1.view(3,4)
print(a1.storage().data_ptr())
print(b1.storage().data_ptr())
print(c1.storage().data_ptr())
print(id(a1))
print(id(b1))
print(id(c1))
tensor中会有两个区,分别是数据存储区和头部区
tensor如果定义一个a后,随后将a的某一行赋值给b
那么a和b就会共享数据存储区,b改动a也会随之改动
这是为了减少内存开销
存储区是按照数据顺序存储的,而头部信息则存储相应的索引关系
上面的a和b共用同一数据区,而头部信息是不同的,代表不同索引方式(就是从数据区取数据的方式及步长发生变化)
什么是连续性?
如果数据区的数据与头部数据区的顺序相符,就是连续的
如果将一个tensor转置后,它的索引就会发生变化,此时就是不连续的
view和reshape都可以改变形状
但是如果如果原tensor是连续的,二者没有区别,返回的都是和原数据共享同一区
但是如果tensor是非连续的,那么viem就会报错,而reshape会创建一个新的副本返回
此副本不和原数据共享同一数据区


目录
相关文章
|
7月前
|
机器学习/深度学习 PyTorch TensorFlow
|
2月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(六):view()和nn.Linear()函数详解
这篇博客文章详细介绍了PyTorch中的`view()`和`nn.Linear()`函数,包括它们的语法格式、参数解释和具体代码示例。`view()`函数用于调整张量的形状,而`nn.Linear()`则作为全连接层,用于固定输出通道数。
127 0
Pytorch学习笔记(六):view()和nn.Linear()函数详解
|
4月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch 中的动态图与静态图:理解它们的区别及其应用场景
【8月更文第29天】深度学习框架中的计算图是构建和训练神经网络的基础。PyTorch 支持两种类型的计算图:动态图和静态图。本文旨在阐述这两种计算图的区别、各自的优缺点以及它们在不同场景下的应用。
1070 0
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习框架:Pytorch与Keras的区别与使用方法
深度学习框架:Pytorch与Keras的区别与使用方法
|
4月前
|
机器学习/深度学习 存储 PyTorch
【深度学习】Pytorch面试题:什么是 PyTorch?PyTorch 的基本要素是什么?Conv1d、Conv2d 和 Conv3d 有什么区别?
关于PyTorch面试题的总结,包括PyTorch的定义、基本要素、张量概念、抽象级别、张量与矩阵的区别、不同损失函数的作用以及Conv1d、Conv2d和Conv3d的区别和反向传播的解释。
303 2
|
7月前
|
机器学习/深度学习 PyTorch TensorFlow
Pytorch 与 Tensorflow:深度学习的主要区别(1)
Pytorch 与 Tensorflow:深度学习的主要区别(1)
225 2
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】16. Pytorch中神经网络模型的构造方法:Module、Sequential、ModuleList、ModuleDict的区别
【从零开始学习深度学习】16. Pytorch中神经网络模型的构造方法:Module、Sequential、ModuleList、ModuleDict的区别
|
7月前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习:Pytorch 与 Tensorflow 的主要区别(2)
深度学习:Pytorch 与 Tensorflow 的主要区别(2)
109 0
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中nn.ReLU()和F.relu()有什么区别?
pytorch中nn.ReLU()和F.relu()有什么区别?
610 0
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch torch.nn库以及nn与nn.functional有什么区别?
Pytorch torch.nn库以及nn与nn.functional有什么区别?
117 0