我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
张量。 请注意,在重塑后,元素总数必须保持不变。 重塑张a
到3 x 5
张量是不恰当的。
如果在某些情况下您不知道要多少行,但是确定了列数,则可以将其指定为-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),即使我在卡视图上使用和。 你知道我可能做错了什么吗?