当前位置: 首页 > 面试题库 >

PyTorch中的“视图”方法如何工作?

孔深
2023-03-14
问题内容

view()对以下代码片段中的方法感到困惑。

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        self.pool  = nn.MaxPool2d(2,2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1   = nn.Linear(16*5*5, 120)
        self.fc2   = nn.Linear(120, 84)
        self.fc3   = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 16*5*5)
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

net = Net()

我的困惑是关于以下几行。

x = x.view(-1, 16*5*5)

tensor.view()函数有什么作用?我已经在很多地方看到了它的用法,但是我不明白它是如何解释其参数的。

如果我给view()函数赋负值作为参数会怎样?例如,如果我打电话给我tensor_variable.view(1, 1, -1)怎么办?

谁能view()举例说明功能的主要原理?


问题答案:

视图功能旨在重塑张量。

说你有张量

import torch
a = torch.range(1, 16)

a是具有1到16(包括)的16个元素的张量。如果要重塑此张量以使其成为4 x 4张量,则可以使用

a = a.view(4, 4)

现在a将是4 x 4张量。 请注意,在重塑后,元素总数必须保持不变。 重塑张a3 x 5张量是不恰当的。

参数-1是什么意思?

如果在某些情况下您不知道要多少行,但是确定了列数,则可以将其指定为-1。( 请注意,您可以将其扩展到具有更大尺寸的张量。只有一个轴值可以为-1
)。这是一种告诉库的方法:“给我一个具有这么多列的张量,然后您就可以计算出实现此目的所需的适当行数”。

可以在上面给出的神经网络代码中看到。在x = self.pool(F.relu(self.conv2(x)))前进功能中的线之后,您将具有16深度特征图。您必须将其展平以将其分配给完全连接的层。因此,您告诉pytorch重塑所获得的张量,使其具有特定的列数,并告诉它自己决定行数。

在numpy和pytorch之间绘制相似之处,view类似于numpy的重塑功能。



 类似资料:
  • 我对下面代码片段中的方法感到困惑。 我的困惑在于以下几行。 什么是张量。view()函数的作用是什么?我在很多地方见过它的用法,但我不明白它是如何解释它的参数的。 如果我将负值作为参数赋给函数,会发生什么情况?例如,如果我调用,? 有人能用一些例子解释一下函数的主要原理吗?

  • 问题内容: 创建视图时,我基本上是在创建一个新表,当其中一个表中的数据发生变化时,该表将自动进行处理。那是对的吗? 另外,为什么我不能在视图中使用子查询? 问题答案: 视图的工作方式 类似于表 ,但不是表。它永远不存在;它只是在引用视图名称时运行的准备好的SQL语句。IE浏览器: …相当于运行: MySQLDump将永远不会包含要插入视图中的行… 另外,为什么我不能在视图中使用子查询???? 遗憾

  • 问题内容: 我想从pytorch模型中形象化。我该怎么做?我尝试使用,但出现错误: 问题答案: 需要一个变量(即带有的张量),而不是模型本身。 尝试:

  • 我有集合视图,我想在scrollViewDidScroll方法中获取当前可见的(最可见的单元格)索引路径。

  • 问题内容: 我正在开始一个大型的Codeigniter项目,并想尝试为内容片段(如可能在不同页面/控制器上显示的数据循环)创建一些可重用的“迷你”视图。 从主控制器的视图中调用视图更好吗?如果是这样,怎么办?还是应该从控制器调用“迷你视图”,然后将视图的代码传递给主视图? 问题答案: 其他视图中的视图称为 嵌套视图 。在CodeIgniter中包括嵌套视图的方法有两种: 1.将嵌套视图加载到控制器

  • 我在玩新的CardView,但是利润似乎不适用。 顺便说一句,我在视图页程序中的片段中使用它。该卡扩展了屏幕的整个宽度(match_parent),即使我在卡视图上使用和。 你知道我可能做错了什么吗?