Gul*_*zar 16 python machine-learning pytorch
OpenAI的REINFORCE和演员批评强化学习的例子有以下代码:
加强:
policy_loss = torch.cat(policy_loss).sum()
Run Code Online (Sandbox Code Playgroud)
loss = torch.stack(policy_losses).sum() + torch.stack(value_losses).sum()
Run Code Online (Sandbox Code Playgroud)
一个是使用torch.cat
,另一个是使用torch.stack
.
就我的理解而言,该文件并未对它们作出任何明确的区分.
我很高兴知道这些功能之间的差异.
Jat*_*aki 33
stack
沿新维度连接张量序列.
cat
在给定维度中连接给定的seq张量序列.
因此,如果A
并且B
具有形状(3,4),torch.cat([A, B], dim=0)
则将具有形状(6,4)并且torch.stack([A, B], dim=0)
将具有形状(2,3,4).
t1 = torch.tensor([[1, 2],
[3, 4]])
t2 = torch.tensor([[5, 6],
[7, 8]])
Run Code Online (Sandbox Code Playgroud)
这些函数类似于numpy.stack
和numpy.concatenate
。