我正在学习
pytorch
和深度学习。 torch.max
的文档没有意义,因为看起来我们可以比较 2 个张量,但我看不到文档中的哪里可以确定这一点。
我一开始有这段代码,我想根据最大值检查 ReLU 值。我以为
0
可以广播和h1.shape=torch.Size([10000, 128])
。
h1 = torch.max(h1, 0)
y = h1 @ W2 + b2
但是,我收到了这个错误:
TypeError: unsupported operand type(s) for @: 'torch.return_types.max' and 'Tensor'
当我更改
max
方程以使用张量而不是 0 时,我必须解决这个问题。
h1 = torch.max(h1, torch.tensor(0))
y = h1 @ W2 + b2
1。为什么这可以修复错误?
当我再次检查文档时,意识到没有任何内容提到像元组或多个张量列表这样的集合,甚至没有提到用于可迭代解包的
*input
。
以下是 2 个版本:
第一个
torch.max
版本:
torch.max(input) → Tensor 返回中所有元素的最大值 输入张量。
警告
与 max(dim=0) 不同,该函数产生确定性(子)梯度
第二版
torch.max
torch.max(input, dim, keepdim=False, *, out=None) 返回一个命名元组 (值,索引)其中值是每行的最大值 给定维度dim 中的输入张量。指数就是指数 找到的每个最大值的位置 (argmax)。
如果 keepdim 为 True,则输出张量与输入大小相同 除了在维度 dim 中,它们的大小为 1。否则,dim 被挤压(参见 torch.squeeze()),产生输出张量 维度比输入少 1。
2。根据本文档,
tensor(0)
是什么?
检查您链接的文档页面底部,其中显示:
torch.max(input, other, *, out=None) → Tensor
See torch.maximum().
当第二个参数是张量时,
torch.max
计算torch.maximum