本文介绍了torch.stack()和torch.cat()函数之间有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

OpenAI的强化学习的REINFORCE和行为者批评示例具有以下代码:

REINFORCE :

policy_loss = torch.cat(policy_loss).sum()

演员批评:

loss = torch.stack(policy_losses).sum() + torch.stack(value_losses).sum()

一个正在使用torch.cat,另一个正在使用torch.stack.

据我了解,文档并没有明确区分他们之间.

我很高兴知道这些功能之间的区别.

解决方案

stack

cat

因此,如果AB的形状为(3,4),则torch.cat([A, B], dim=0)的形状将为(6,4),而torch.stack([A, B], dim=0)的形状将为(2,3,4). /p>

OpenAI's REINFORCE and actor-critic example for reinforcement learning has the following code:

REINFORCE:

policy_loss = torch.cat(policy_loss).sum()

actor-critic:

loss = torch.stack(policy_losses).sum() + torch.stack(value_losses).sum()

One is using torch.cat, the other uses torch.stack.

As far as my understanding goes, the doc doesn't give any clear distinction between them.

I would be happy to know the differences between the functions.

解决方案

stack

cat

So if A and B are of shape (3, 4), torch.cat([A, B], dim=0) will be of shape (6, 4) and torch.stack([A, B], dim=0) will be of shape (2, 3, 4).

这篇关于torch.stack()和torch.cat()函数之间有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-29 03:07