Pytorch实现List Tensor转Tensor,reshape拼接等操作

目录
  • 一、List Tensor转Tensor (torch.cat)
    • 高维tensor
  • 二、List Tensor转Tensor (torch.stack)

持续更新一些常用的Tensor操作,比如List,Numpy,Tensor之间的转换,Tensor的拼接,维度的变换等操作。

其它Tensor操作如 einsum等见:待更新。

用到两个函数:

  • torch.cat
  • torch.stack

一、List Tensor转Tensor (torch.cat)

// An highlighted block
>>> t1 = torch.FloatTensor([[1,2],[5,6]])
>>> t2 = torch.FloatTensor([[3,4],[7,8]])
>>> l = []
>>> l.append(t1)
>>> l.append(t2)
>>> ta = torch.cat(l,dim=0)
>>> ta = torch.cat(l,dim=0).reshape(2,2,2)
>>> tb = torch.cat(l,dim=1).reshape(2,2,2)
>>> ta
tensor([[[1., 2.],
         [5., 6.]],

        [[3., 4.],
         [7., 8.]]])
>>> tb
tensor([[[1., 2.],
         [3., 4.]],

        [[5., 6.],
         [7., 8.]]])

高维tensor

** 如果理解了2D to 3DTensor,以此类推,不难理解3D to 4D,看下面代码即可明白:**

>>> t1 = torch.range(1,8).reshape(2,2,2)
>>> t2 = torch.range(11,18).reshape(2,2,2)
>>> l = []
>>> l.append(t1)
>>> l.append(t2)
>>> torch.cat(l,dim=2).reshape(2,2,2,2)
tensor([[[[ 1.,  2.],
          [11., 12.]],

         [[ 3.,  4.],
          [13., 14.]]],

        [[[ 5.,  6.],
          [15., 16.]],

         [[ 7.,  8.],
          [17., 18.]]]])
>>> torch.cat(l,dim=1).reshape(2,2,2,2)
tensor([[[[ 1.,  2.],
          [ 3.,  4.]],

         [[11., 12.],
          [13., 14.]]],

        [[[ 5.,  6.],
          [ 7.,  8.]],

         [[15., 16.],
          [17., 18.]]]])
>>> torch.cat(l,dim=0).reshape(2,2,2,2)
tensor([[[[ 1.,  2.],
          [ 3.,  4.]],

         [[ 5.,  6.],
          [ 7.,  8.]]],

        [[[11., 12.],
          [13., 14.]],

         [[15., 16.],
          [17., 18.]]]])

二、List Tensor转Tensor (torch.stack)

代码:

import torch

t1 = torch.FloatTensor([[1,2],[5,6]])
t2 = torch.FloatTensor([[3,4],[7,8]])
l = [t1, t2]

t3 = torch.stack(l, dim=2)
print(t3.shape)
print(t3)

## output:
## torch.Size([2, 2, 2])
## tensor([[[1., 3.],
##          [2., 4.]],
##        [[5., 7.],
##         [6., 8.]]])

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • pytorch Variable与Tensor合并后 requires_grad()默认与修改方式

    pytorch更新完后合并了Variable与Tensor torch.Tensor()能像Variable一样进行反向传播的更新,返回值为Tensor Variable自动创建tensor,且返回值为Tensor,(所以以后不需要再用Variable) Tensor创建后,默认requires_grad=Flase 可以通过xxx.requires_grad_()将默认的Flase修改为True 下面附代码及官方文档代码: import torch from torch.autograd im

  • Pytorch之扩充tensor的操作

    我就废话不多说了,大家还是直接看代码吧~ b = torch.zeros((3, 2, 6, 6)) a = torch.zeros((3, 2, 1, 1)) a.expand_as(b).size() Out[32]: torch.Size([3, 2, 6, 6]) a = torch.zeros((3, 2, 2, 1)) a.expand_as(b).size() Traceback (most recent call last): File "/home/lart/.conda/en

  • 详解Pytorch中的tensor数据结构

    目录 torch.Tensor Tensor 数据类型 view 和 reshape 的区别 Tensor 与 ndarray 创建 Tensor 传入维度的方法 torch.Tensor torch.Tensor 是一种包含单一数据类型元素的多维矩阵,类似于 numpy 的 array.Tensor 可以使用 torch.tensor() 转换 Python 的 list 或序列数据生成,生成的是dtype 默认是 torch.FloatTensor. 注意 torch.tensor() 总是

  • Pytorch实现List Tensor转Tensor,reshape拼接等操作

    目录 一.List Tensor转Tensor (torch.cat) 高维tensor 二.List Tensor转Tensor (torch.stack) 持续更新一些常用的Tensor操作,比如List,Numpy,Tensor之间的转换,Tensor的拼接,维度的变换等操作. 其它Tensor操作如 einsum等见:待更新. 用到两个函数: torch.cat torch.stack 一.List Tensor转Tensor (torch.cat) // An highlighted

  • pytorch中torch.max和Tensor.view函数用法详解

    torch.max() 1. torch.max()简单来说是返回一个tensor中的最大值. 例如: >>> si=torch.randn(4,5) >>> print(si) tensor([[ 1.1659, -1.5195, 0.0455, 1.7610, -0.2064], [-0.3443, 2.0483, 0.6303, 0.9475, 0.4364], [-1.5268, -1.0833, 1.6847, 0.0145, -0.2088], [-0.86

  • PyTorch中Tensor和tensor的区别及说明

    目录 Tensor和tensor的区别 pytorch Tensor变形函数 Tensor的排序与取极值 Tensor与NumPy转换 Tensor和tensor的区别 本文列举的框架源码基于PyTorch1.0,交互语句在0.4.1上测试通过 import torch 在PyTorch中,Tensor和tensor都能用于生成新的张量: >>> a=torch.Tensor([1,2]) >>> a tensor([1., 2.]) >>> a=to

  • 在pytorch中为Module和Tensor指定GPU的例子

    pytorch指定GPU 在用pytorch写CNN的时候,发现一运行程序就卡住,然后cpu占用率100%,nvidia-smi 查看显卡发现并没有使用GPU.所以考虑将模型和输入数据及标签指定到gpu上. pytorch中的Tensor和Module可以指定gpu运行,并且可以指定在哪一块gpu上运行,方法非常简单,就是直接调用Tensor类和Module类中的 .cuda() 方法. import torch from PIL import Image import torch.nn as

  • 基于tf.shape(tensor)和tensor.shape()的区别说明

    #tf.shape(tensor)和tensor.shape()的区别 a=tf.zeros([4,5,4,5,6]) print(type(a.shape)) print(a.shape.ndims)#多少个维度 print(a.shape.as_list())#返回列表 print(type(tf.shape(a))) print(type(tf.shape(a)[0])) b=a.shape.as_list() c=tf.shape(a) b[1]=tf.shape(a)[1] print

  • Pytorch上下采样函数之F.interpolate数组采样操作详解

    目录 什么是上采样 F.interpolate——数组采样操作 输入: 注意: 补充: 代码案例 一般用法 size与scale_factor的区别:输入序列时 size与scale_factor的区别:输入整数时 align_corners=True与False的区别 扩展: 总结 什么是上采样 上采样,在深度学习框架中,可以简单的理解为任何可以让你的图像变成更高分辨率的技术. 最简单的方式是重采样和插值:将输入图片input image进行rescale到一个想要的尺寸,而且计算每个点的像素

  • pytorch程序异常后删除占用的显存操作

    1-删除模型变量 del model_define 2-清空CUDA cache torch.cuda.empty_cache() 3-步骤2(异步)需要一定时间,设置时延 time.sleep(5) 完整代码如下: del styler torch.cuda.empty_cache() time.sleep(5) 以上这篇pytorch程序异常后删除占用的显存操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 解决Pytorch dataloader时报错每个tensor维度不一样的问题

    使用pytorch的dataloader报错: RuntimeError: stack expects each tensor to be equal size, but got [2] at entry 0 and [1] at entry 1 1. 问题描述 报错定位:位于定义dataset的代码中 def __getitem__(self, index): ... return y #此处报错 报错内容 File "D:\python\lib\site-packages\torch\uti

  • pytorch从csv加载自定义数据模板的操作

    整理了一套模板,全注释了,这个难点终于克服了 from PIL import Image import pandas as pd import numpy as np import torchvision.transforms as transforms from torch.utils.data import Dataset, DataLoader import os #放文件的路径 dir_path= './97/train/' csv_path='./97/train.csv' class

  • pytorch查看网络参数显存占用量等操作

    1.使用torchstat pip install torchstat from torchstat import stat import torchvision.models as models model = models.resnet152() stat(model, (3, 224, 224)) 关于stat函数的参数,第一个应该是模型,第二个则是输入尺寸,3为通道数.我没有调研该函数的详细参数,也不知道为什么使用的时候并不提示相应的参数. 2.使用torchsummary pip in

随机推荐