DataParallel 将我的计算沿着批处理维度分布在多个GPU上。我的网络需要 Tensor (我们称之为 A )在内部,这是不变的,不会通过优化而改变。看来 数据并行 不会自动复制此 张量 对于所有有问题的gpu,网络将因此抱怨输入数据块 x 它看到的驻留在不同的GPU上 A
DataParallel
Tensor
A
数据并行
张量
x
有办法吗 你能自动处理这种情况吗?或者,有没有办法复制 张量 全部的 GPU?还是我应该留一个 张量 并根据用户看到的块的位置手动确定要使用哪个副本 forward 居住?
forward
你应该把张量包起来 torch.nn.Parameter requires_grad=False 在创作过程中。
torch.nn.Parameter
requires_grad=False
torch.nn.参数 .
torch.nn.参数
它仅仅意味着它是模型的一部分,如果需要的话应该被转移(例如多个GPU)。
torch 知道哪个张量在里面 __init__ 是模型的一部分(您可以对张量执行一些操作并添加到 self 只是为了完成一些事情)。
torch
__init__
self