【发布时间】:2018-08-08 18:31:12
【问题描述】:
函数torch.nn.functional.softmax 有两个参数:input 和dim。根据其文档,softmax 操作沿指定的dim 应用于input 的所有切片,并将重新缩放它们,使元素位于(0, 1) 范围内并且总和为1。
让输入为:
input = torch.randn((3, 4, 5, 6))
假设我想要以下内容,那么该数组中的每个条目都是 1:
sum = torch.sum(input, dim = 3) # sum's size is (3, 4, 5, 1)
我应该如何应用softmax?
softmax(input, dim = 0) # Way Number 0
softmax(input, dim = 1) # Way Number 1
softmax(input, dim = 2) # Way Number 2
softmax(input, dim = 3) # Way Number 3
我的直觉告诉我这是最后一个,但我不确定。英语不是我的母语,因此 along 这个词的使用让我感到困惑。
我不太清楚“沿”是什么意思,所以我将使用一个可以澄清事情的例子。假设我们有一个大小为 (s1, s2, s3, s4) 的张量,我希望这种情况发生
【问题讨论】:
-
-1 有什么作用?
-
“使该数组中的每个条目都是 1:”是什么意思?你能澄清你的问题想要什么吗?
-
沿着
dim=0意味着以下:考虑一个大小为(s0,s1,s2,s3)的张量t。然后沿着维度0表示我们可以在该维度中索引的坐标范围从该维度的数字元素的开头到结尾。在这种情况下,这意味着通过t[0,b,c,d], ... , t[i0,b,c,d] , ... , t[s0,b,c,d]。只需遍历第零坐标的所有值。 -
discuss.pytorch.org/t/… 可能会有所帮助..(使用 dim=1)softmax 函数沿轴 1 应用。这就是为什么所有行加起来为 1。(使用 dim=0)softmax 函数沿轴 0 应用。使所有列加起来为 1