问题标签 [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.
python - pytorch闪电模型的输出预测
这可能是一个非常简单的问题。我刚开始使用 PyTorch 闪电,无法弄清楚如何在训练后接收模型的输出。
我对 y_train 和 y_test 作为某种数组的预测感兴趣(稍后步骤中的 PyTorch 张量或 NumPy 数组)以使用不同的脚本在标签旁边绘制。
在我的闪电模块中,我具有以下功能:
我是否需要特定的预测功能,或者是否有任何我看不到的已经实现的方式?
python - 是否存在与 torch.nn.Sequential 等效的“Split”?
块的示例代码Sequential
是
是否有一些类似nn.Sequential
的结构将模块并行放入其中?
我现在想定义类似
其输出应该是两个数据管道 - 每个元素一个,self._mean_logvar_layers
然后可馈送到网络的其余部分。有点像多头网络。
我目前的实现:
和
我想将并行构造视为一个层。
这在 PyTorch 中可行吗?
pytorch - 如何在 PyTorch 中与另一个数据加载器一起采样
假设我有正常的训练/有效/测试数据集batch_size
和shuffle
编辑。
memory_size
当我进行训练/验证/测试时,我想为每个样本从整个数据集中抽取一定数量(称为)的新样本。
例如,我设置batch_size
为256
,让数据集洗牌,并设置memory_size
为80
。在每forward
一步中,不仅要使用数据集中的每个样本,还要使用整个原始数据集中的样本数据,大小是memory_size
我想在里面使用它forward
。让新样本作为内存(是的,我想采用Memory Networks的想法)。记忆可以在训练集中的每个样本之间重叠。
我正在使用 PyTorch 和 PyTorch-Lightning。我可以dataloader
为每个train_dataloader
,创建新内存val_dataloader
,test_dataloader
然后使用原始数据加载器加载它吗?还是有更好的方法来实现我想要的?
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
pytorch - 如何剥离预训练网络并使用 pytorch 闪电添加一些层?
我正在尝试将迁移学习用于图像分割任务,我的计划是使用预训练模型(例如 VGG16)的前几层作为编码器,然后添加我自己的解码器。
所以,我可以加载模型并通过打印它来查看结构:
我得到这样的:
例如,我还可以访问特定的图层model.layer3
。现在,我正在为某些事情而苦苦挣扎。
- 如何切割模型并将每个模块从任何层的开始到结束(例如model.layer3)?
- 如何
freeze
只保留这个被剥离的部分,并保持新添加的模块可用于培训?
python - 如何在 Tensorboard 中绘制不是直方图的多纪元 xy 线图?
我想在张量板上绘制一个标准折线图 - 每个时代。
在 Matplotlib 中,我只会使用plt.plot(np.arange(100), np.arange(100))
[而不是plt.hist()
],但会留下多个图表,而不是方便的tensorboard UI。
我希望每个时期都生成这样的图表,并在彼此附近绘制,以使输出看起来类似于histogram
,就像这样,但显示数据 - 只需将其绘制在相关时期。
我会使用直方图机制,但我不知道如何使用它来绘制值而不是直方图(它会扭曲 X 轴,并在 Y 轴上计数,而不仅仅是按原样显示数据) .
我正在使用 Pytorch [和 Pytorch 闪电],因此首选兼容的解决方案。
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 上它看起来像这样:
清除缓存并减小批量大小不起作用。我是一个新手,很明显这里的东西正在爆炸,但我不知道是什么。任何帮助,将不胜感激。
谢谢!
pytorch - Pytorch Lightning 在 ddp 模式下复制主脚本
当我使用 ddp 模式(2 个 GPU)在集群上启动我的主脚本时,Pytorch Lightning 会复制主脚本中执行的任何内容,例如打印或其他逻辑。我需要一些扩展的训练逻辑,我想自己处理。例如,在 之后做某事(一次!)Trainer.fit()
。但是由于主脚本的重复,这并不像我想要的那样工作。我也尝试将它包装在 中if __name__ == "__main__"
,但它不会改变行为。如何解决这个问题?或者,如何在没有重复项的情况下围绕我的 Trainer 对象使用一些逻辑?