【PyTorch】PyTroch中.view()函数的详细使用方法

一、.view()函数简介

  • PyTorch中的.view()函数是一个用于改变张量形状的方法。它类似于NumPy中的.reshape()函数,可以通过重新排列张量的维度来改变其形状,而不改变张量的数据
  • 在深度学习中,.view()函数常用于调整输入数据的形状以适应模型的输入要求,或者在网络层之间传递数据时进行形状的转换。
  • .view()函数的语法如下,shape是一个整数元组,用于指定新的张量形状,新形状的元素个数必须与原形状的元素个数相同。函数返回一个具有指定形状的新张量,但与原始张量共享数据存储,因此它们指向相同的内存区域。
New_Tensor = Tensor.view(*shape)

二、.view()函数的使用方法

1. 改变形状

直接使用.view(new_shape)将张量修改为指定形状,保持新张量和原张量在数量上一致即可。

import torch

# 创建一个形状为(2, 3, 4)的张量
x = torch.randn(2, 3, 4)
print("原始张量形状:", x.shape)

# 使用.view()改变张量形状为(6, 4)
y = x.view(6, 4)
print("改变形状后的张量形状:", y.shape)

运行结果:
在这里插入图片描述

2. 使用-1展平张量

在PyTorch中,.view()函数可以接受一个特殊的参数 -1,用于自动计算张量在该维度上的大小。将某个维度的大小设置为 -1,可以使得该维度的大小根据其他维度的大小自动确定,以保持张量的元素总数不变。

import torch

# 创建一个形状为(2, 3, 4)的张量
x = torch.randn(2, 3, 4)
print("原始张量形状:", x.shape)

# 使用.view()展平张量为形状为(12,2)
y1 = x.view(-1,2)
print("展平后的张量y1形状:", y1.shape)

# 使用.view()展平张量为形状为(6,2,2)
y2 = x.view(-1,2,2)
print("展平后的张量y2形状:", y2.shape)

运行结果:
在这里插入图片描述

3. 调整维度

import torch

# 创建一个形状为(2, 3, 4)的张量
x = torch.randn(2, 3, 4)
print("原始张量形状:", x.shape)

# 使用.view()调整张量的维度为(2, 4, 3)
y = x.view(2, 4, 3)
print("调整维度后的张量形状:", y.shape)

运行结果:
在这里插入图片描述

  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
PyTorch,`nn.Module`是所有神经网络模块的基类。它是一个封装了参数、计算方法以及其他网络组件的类,可以用来构建自己的神经网络模型。 每个`nn.Module`子类的构造函数都应该调用基类的构造函数。在`__init__`方法,我们可以定义网络的各个层、参数和其他组件。我们也可以在`forward`方法定义网络的前向传播过程,即输入数据经过一系列计算后得到输出结果。 `nn.Module`提供了很多实用的方法,例如`parameters`方法可以返回模型所有可训练的参数,`to`方法可以将模型转移到指定的设备上等。 示例代码: ```python import torch import torch.nn as nn class MyModel(nn.Module): def __init__(self): super(MyModel, self).__init__() self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1) self.relu = nn.ReLU(inplace=True) self.pool = nn.MaxPool2d(kernel_size=2, stride=2) self.fc = nn.Linear(16 * 14 * 14, 10) def forward(self, x): x = self.conv1(x) x = self.relu(x) x = self.pool(x) x = x.view(x.size(0), -1) x = self.fc(x) return x model = MyModel() input = torch.randn(1, 3, 28, 28) output = model(input) ``` 这里我们定义了一个简单的卷积神经网络模型,包括了一个卷积层、一个ReLU激活函数、一个最大池化层和一个全连接层。在`forward`方法,我们定义了输入数据的前向传播过程。我们可以通过调用`parameters`方法打印出模型的所有参数:`print(list(model.parameters()))`。我们还可以使用`to`方法将模型转移到GPU上:`model.to(device)`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值