# PyTorch深度学习基础之Tensor的变换、拼接、拆分讲解及实战（附源码 超详细必看）

PyTorch提供了大量的对Tensor进行操作的函数或者方法，这些函数内部使用指针实现对矩阵的形状变换拼接拆分等操作，使得人们无须关心Tensor在内存中的物理结构或者管理指针就可以方便且快速的执行这些操作，下面nelement，ndimension，size等方法 可以查看矩阵元素的个数，轴的个数以及维度等

import  torch
import numpy as np
a=torch.rand(1,2,3,4,5)
print("元素个数",a.nelement())
print("轴的个数",a.ndimension())
print("矩阵维度",a.shape)

import  torch
import numpy as np
a=torch.rand(1,2,3,4,5)
print("元素个数",a.nelement())
print("轴的个数",a.ndimension())
print("矩阵维度",a.shape)
###########
b=a.view(2*3,4*5)
print(b.shape)
c=a.reshape(-1)
print(c.shape)
d=a.reshape(2*3,-1)
print(d.shape)

squeeze和unsqueeze用来给Tensor去掉和添加轴，分别去掉维度为1 的轴和添加维度为1的轴

b=torch.squeeze(a)
print(b.shape)

t和transpose用于转置二维矩阵，这两个函数只接受二维Tensor，t是transpose的简化版

a=torch.tensor([[2]])
b=torch.tensor([[2,3]])
print(torch.transpose(a,1,0,))
print(torch.t(a))
print(torch.transpose(b,1,0,))
print(torch.t(b))
############
a=torch.rand((1,224,224,3))
print(a.shape)
b=a.permute(0,3,1,2)
print(b.shape)

PyTorch提供了cat和stack方法用于拼接矩阵，cat在已有的轴dim上拼接矩阵，给定轴的维度可以不同，而其他轴的维度必须相同，stack在新的轴上面拼接，它要求被拼接的矩阵所有维度都相同

a=torch.randn(2,3)
b=torch.randn(3,3)
c=torch.cat((a,b))
d=torch.cat((b,b,b),dim=1)
print(c.shape)
print(d.shape)
c=torch.stack((b,b),dim=1)
d=torch.stack((b,b),dim=0)
print(c.shape)
print(d.shape)

a=torch.randn(10,3)
for x in torch.split(a,[1,2,3,4],dim=0):
print(x.shape)
for x in torch.split(a,4,dim=0):
print(x.shape)
for x in torch.chunk(a,4,dim=0):
print(x.shape)

import  torch
import numpy as np
a=torch.rand(1,2,3,4,5)
print("元素个数",a.nelement())
print("轴的个数",a.ndimension())
print("矩阵维度",a.shape)
###########
b=a.view(2*3,4*5)
print(b.shape)
c=a.reshape(-1)
print(c.shape)
d=a.reshape(2*3,-1)
print(d.shape)
#############
b=torch.squeeze(a)
print(b.shape)
#############
a=torch.tensor([[2]])
b=torch.tensor([[2,3]])
print(torch.transpose(a,1,0,))
print(torch.t(a))
print(torch.transpose(b,1,0,))
print(torch.t(b))
############
a=torch.rand((1,224,224,3))
print(a.shape)
b=a.permute(0,3,1,2)
print(b.shape)
################
a=torch.randn(2,3)
b=torch.randn(3,3)
c=torch.cat((a,b))
d=torch.cat((b,b,b),dim=1)
print(c.shape)
print(d.shape)
c=torch.stack((b,b),dim=1)
d=torch.stack((b,b),dim=0)
print(c.shape)
print(d.shape)
############
a=torch.randn(10,3)
for x in torch.split(a,[1,2,3,4],dim=0):
print(x.shape)
for x in torch.split(a,4,dim=0):
print(x.shape)
for x in torch.chunk(a,4,dim=0):
print(x.shape)

|
1天前
|

【从零开始学习深度学习】15. Pytorch实战Kaggle比赛：房价预测案例【含数据集与源码】
【从零开始学习深度学习】15. Pytorch实战Kaggle比赛：房价预测案例【含数据集与源码】
9 0
|
1天前
|

【从零开始学习深度学习】50.Pytorch_NLP项目实战：卷积神经网络textCNN在文本情感分类的运用
【从零开始学习深度学习】50.Pytorch_NLP项目实战：卷积神经网络textCNN在文本情感分类的运用
8 0
|
1天前
|

【从零开始学习深度学习】49.Pytorch_NLP项目实战：文本情感分类---使用循环神经网络RNN
【从零开始学习深度学习】49.Pytorch_NLP项目实战：文本情感分类---使用循环神经网络RNN
9 1
|
1天前
|

【从零开始学习深度学习】48.Pytorch_NLP实战案例：如何使用预训练的词向量模型求近义词和类比词
【从零开始学习深度学习】48.Pytorch_NLP实战案例：如何使用预训练的词向量模型求近义词和类比词
8 0
|
1天前
|

【从零开始学习深度学习】47. Pytorch图片样式迁移实战：将一张图片样式迁移至另一张图片，创作自己喜欢风格的图片【含完整源码】
【从零开始学习深度学习】47. Pytorch图片样式迁移实战：将一张图片样式迁移至另一张图片，创作自己喜欢风格的图片【含完整源码】
11 2
|
30天前
|

Pytorch实现手写数字识别 | MNIST数据集（CNN卷积神经网络）
Pytorch实现手写数字识别 | MNIST数据集（CNN卷积神经网络）
97 0
|
1天前
|

【从零开始学习深度学习】36. 门控循环神经网络之长短期记忆网络（LSTM）介绍、Pytorch实现LSTM并进行训练预测
【从零开始学习深度学习】36. 门控循环神经网络之长短期记忆网络（LSTM）介绍、Pytorch实现LSTM并进行训练预测
10 2
|
1天前
|

【从零开始学习深度学习】35. 门控循环神经网络之门控循环单元（gated recurrent unit，GRU）介绍、Pytorch实现GRU并进行训练预测
【从零开始学习深度学习】35. 门控循环神经网络之门控循环单元（gated recurrent unit，GRU）介绍、Pytorch实现GRU并进行训练预测
10 0
|
1天前
|

【从零开始学习深度学习】16. Pytorch中神经网络模型的构造方法：Module、Sequential、ModuleList、ModuleDict的区别
【从零开始学习深度学习】16. Pytorch中神经网络模型的构造方法：Module、Sequential、ModuleList、ModuleDict的区别
13 1
|
28天前
|

29 1