问题标签 [pytorch-lightning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6573 浏览

python - pytorch闪电模型的输出预测

这可能是一个非常简单的问题。我刚开始使用 PyTorch 闪电,无法弄清楚如何在训练后接收模型的输出。

我对 y_train 和 y_test 作为某种数组的预测感兴趣(稍后步骤中的 PyTorch 张量或 NumPy 数组)以使用不同的脚本在标签旁边绘制。

在我的闪电模块中,我具有以下功能:

我是否需要特定的预测功能,或者是否有任何我看不到的已经实现的方式?

0 投票
2 回答
839 浏览

python - 是否存在与 torch.nn.Sequential 等效的“Split”?

块的示例代码Sequential


是否有一些类似nn.Sequential的结构将模块并行放入其中?

我现在想定义类似

其输出应该是两个数据管道 - 每个元素一个,self._mean_logvar_layers然后可馈送到网络的其余部分。有点像多头网络。


我目前的实现:

我想将并行构造视为一个层。

这在 PyTorch 中可行吗?

0 投票
0 回答
154 浏览

pytorch - 如何在 PyTorch 中与另一个数据加载器一起采样

假设我有正常的训练/有效/测试数据集batch_sizeshuffle编辑。

memory_size当我进行训练/验证/测试时,我想为每个样本从整个数据集中抽取一定数量(称为)的新样本。

例如,我设置batch_size256,让数据集洗牌,并设置memory_size80。在每forward一步中,不仅要使用数据集中的每个样本,还要使用整个原始数据集中的样本数据,大小是memory_size我想在里面使用它forward。让新样本作为内存(是的,我想采用Memory Networks的想法)。记忆可以在训练集中的每个样本之间重叠。

我正在使用 PyTorch 和 PyTorch-Lightning。我可以dataloader为每个train_dataloader,创建新内存val_dataloadertest_dataloader然后使用原始数据加载器加载它吗?还是有更好的方法来实现我想要的?

0 投票
1 回答
564 浏览

pytorch-lightning - 使用 pytorch 闪电进行多 GPU 训练时出错

下面的代码在单个 GPU 上工作,但在使用多个 GPU 时抛出错误 RuntimeError: grad can be implicitly created only for scalar outputs

代码

损失值是一个缩放器: tensor(12.8875, device='cuda:1', grad_fn=NllLossBackward) 这个错误背后的原因是什么?

回溯(最后一次调用):文件“training_trial.py”,第 390 行,在 trainer.fit(model) 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning /trainer/trainer.py”,第 510 行,适合结果 = self.accelerator_backend.train() 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/accelerators/加速器.py”,第 57 行,在火车中返回 self.train_or_test() 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/accelerators/accelerator.py”,行74,在train_or_test results = self.trainer.train() 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/trainer/trainer.py”,第561行,在训练自己。train_loop.run_training_epoch() 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/trainer/training_loop.py”,第 549 行,在 run_training_epoch batch_output = self.run_training_batch(batch ,batch_idx,dataloader_idx)文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/trainer/training_loop.py”,第704行,在run_training_batch self.optimizer_step(优化器,opt_idx ,batch_idx,train_step_and_backward_closure)文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/trainer/training_loop.py”,第490行,在optimizer_step using_lbfgs=is_lbfgs,文件“/主页/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/core/lightning。py”,第 1296 行,在 optimizer_step optimizer.step(closure=optimizer_closure) 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/core/optimizer.py”,行286、在步骤self.__optimizer_step(*args,closure=closure,profiler_name=profiler_name,**kwargs)文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/core /optimizer.py",第 144 行,在 _7/site-packages/pytorch_lightning/core/optimizer.py”,第 144 行,在 _7/site-packages/pytorch_lightning/core/optimizer.py”,第 144 行,在 _optimizer_step optimizer.step(closure=closure, *args, **kwargs) 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/torch/optim/lr_scheduler.py”,行67、在 wrapper 中返回 Wrapped(*args, **kwargs) 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/transformers/optimization.py”,第 318 行,步骤loss =closure() 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/trainer/training_loop.py”,第 699 行,在 train_step_and_backward_closure self.trainer.hiddens 文件中“ /home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/trainer/training_loop.py”,第 802 行,training_step_and_backward self.backward(result, optimizer, opt_idx) 文件”/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/trainer/training_loop.py”,第 829 行,后向 result.closure_loss,优化器,opt_idx,*args,**kwargs文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/accelerators/accelerator.py”,第 109 行,后向 model.backward(closure_loss,优化器,opt_idx,*args , **kwargs) 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/pytorch_lightning/core/lightning.py”,第 1162 行,后向 loss.backward(*args, **kwargs)文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/torch/tensor.py”,第 221 行,后向 torch.autograd.backward(self,gradient,保留图,创建图)文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/torch/autograd/init .py”,第 126 行,向后 grad_tensors = make_grads(tensors, grad_tensors ) 文件“/home/nvarshn2/.conda/envs/pytorch_lightning_new_env/lib/python3.7/site-packages/torch/autograd/init .py ” ,第 50 行,在 _make_grads raise RuntimeError("grad can be implicitly created only for scalar outputs") RuntimeError: grad can be implicitly created only for scalar outputs

0 投票
3 回答
1212 浏览

pytorch - 如何剥离预训练网络并使用 pytorch 闪电添加一些层?

我正在尝试将迁移学习用于图像分割任务,我的计划是使用预训练模型(例如 VGG16)的前几层作为编码器,然后添加我自己的解码器。

所以,我可以加载模型并通过打印它来查看结构:

我得到这样的:

例如,我还可以访问特定的图层model.layer3。现在,我正在为某些事情而苦苦挣扎。

  1. 如何切割模型并将每个模块从任何层的开始到结束(例如model.layer3)?
  2. 如何freeze只保留这个被剥离的部分,并保持新添加的模块可用于培训?
0 投票
0 回答
112 浏览

python - 如何在 Tensorboard 中绘制不是直方图的多纪元 xy 线图?

我想在张量板上绘制一个标准折线图 - 每个时代。

在 Matplotlib 中,我只会使用plt.plot(np.arange(100), np.arange(100))[而不是plt.hist()],但会留下多个图表,而不是方便的tensorboard UI。

我希望每个时期都生成这样的图表,并在彼此附近绘制,以使输出看起来类似于histogram,就像这样,但显示数据 - 只需将其绘制在相关时期。

我会使用直方图机制,但我不知道如何使用它来绘制值而不是直方图(它会扭曲 X 轴,并在 Y 轴上计数,而不仅仅是按原样显示数据) .


我正在使用 Pytorch [和 Pytorch 闪电],因此首选兼容的解决方案。

0 投票
1 回答
805 浏览

deep-learning - Pytorch 模型在 CPU 和 GPU 上都内存不足,无法弄清楚我做错了什么

尝试使用 Pytorch Lightning 实现一个简单的多标签图像分类器。这是模型定义:

问题可能不是机器,因为我使用的是具有 60 GB RAM 和 12 GB VRAM 的云实例。每当我运行这个模型时,即使是一个时期,我都会遇到内存不足的错误。在 CPU 上它看起来像这样:

RuntimeError: [enforce fail at CPUAllocator.cpp:64] . DefaultCPUAllocator: can't allocate memory: you tried to allocate 1966080000 bytes. Error code 12 (Cannot allocate memory)

在 GPU 上它看起来像这样:

清除缓存并减小批量大小不起作用。我是一个新手,很明显这里的东西正在爆炸,但我不知道是什么。任何帮助,将不胜感激。

谢谢!

0 投票
3 回答
791 浏览

pytorch - Pytorch Lightning 在 ddp 模式下复制主脚本

当我使用 ddp 模式(2 个 GPU)在集群上启动我的主脚本时,Pytorch Lightning 会复制主脚本中执行的任何内容,例如打印或其他逻辑。我需要一些扩展的训练逻辑,我想自己处理。例如,在 之后做某事(一次!)Trainer.fit()。但是由于主脚本的重复,这并不像我想要的那样工作。我也尝试将它包装在 中if __name__ == "__main__",但它不会改变行为。如何解决这个问题?或者,如何在没有重复项的情况下围绕我的 Trainer 对象使用一些逻辑?

0 投票
2 回答
997 浏览

pytorch-lightning - PyTorch Lightning:同一张量板图中的多个标量(例如训练和有效损失)

使用 PyTorch Tensorboard,我可以在单个 Tensorboard 图中记录我的训练和有效损失,如下所示:

在此处输入图像描述

如何使用 Pytorch Lightning 的默认 Tensorboard 记录器实现相同的功能?

0 投票
1 回答
2479 浏览

pytorch-lightning - 如何在 PyTorch Lightning 中获得所有时期的逐步验证损失曲线

validation_step()在 PyTorch Lighting 中记录我的验证丢失时,如下所示:

然后,我得到一个时代损失曲线:

在此处输入图像描述

如果我想要逐步损失曲线,我可以设置on_step=True

这导致每个时期的逐步损失曲线:

在此处输入图像描述

我怎样才能得到所有时期的单一图表呢?当我进行数千个 epoch 的训练时,这会变得一团糟。