问题标签 [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 中的截断反向传播(闪电)在很长的序列上运行 LSTM?
我有一个很长的时间序列,我想输入 LSTM 以进行每帧分类。
我的数据是按帧标记的,我知道一些罕见的事件发生后会严重影响分类。
因此,我必须输入整个序列才能获得有意义的预测。
众所周知,仅将非常长的序列输入 LSTM 是次优的,因为梯度会像正常的 RNN 一样消失或爆炸。
我想使用一种简单的技术将序列切割成更短(比如 100 长)的序列,并在每个序列上运行 LSTM,然后将最终的 LSTM 隐藏和单元状态作为下一个前向传递的开始隐藏和单元状态传递.
这是我发现的一个例子。在那里它被称为“通过时间截断的反向传播”。我无法为我做同样的工作。
我在 Pytorch 闪电中的尝试(去掉了不相关的部分):
运行此代码会出现以下错误:
如果我添加也会发生同样的情况
如果我使用该错误不会发生
但显然这是没有用的,因为当前帧批次的输出不会转发到下一个。
是什么导致了这个错误?我认为分离输出应该足够了h_n
。c_n
如何将前一个帧批次的输出传递给下一个帧,并让火炬分别反向传播每个帧批次?
python - 使用 Pytorch Lightning 时如何将指标(例如验证损失)记录到 TensorBoard?
我正在使用 Pytorch Lightning 来训练我的模型(在 GPU 设备上,使用 DDP),TensorBoard 是 Lightning 使用的默认记录器。
我的代码设置为分别记录每个训练和验证步骤的训练和验证损失。
TensorBoard 在选项卡中正确绘制train_loss
和val_loss
图表SCALERS
。但是,在HPARAMS
左侧栏中的选项卡中,仅hp_metric
在 下可见Metrics
。
但是,在HPARAMS
左侧栏中的选项卡中,仅hp_metric
在 下可见Metrics
。
我们如何添加train_loss
和val_loss
到该Metrics
部分?这样,我们将能够使用val_loss
inPARALLEL COORDINATES VIEW
而不是hp_metric
。
使用 Pytorch 1.8.1、Pytorch Lightning 1.2.6、TensorBoard 2.4.1
python - 如何在忽略类中使用 pytorch 闪电精度?
CrossEntropyLoss
我有一些与忽略类一起使用的训练管道。
log_probs
形状的模型输出(150, 3)
- 意味着 3 个可能的类别,每批 150 个。
是label_batch
shape150
和torch.max(label_batch)
== tensor(3, device='cuda:0')
,意味着有一个额外的类被标记为3
,它是忽略类。
损失处理得很好:
但是准确度指标认为类3
是有效的并且给出了非常错误的结果:
self.train_acc = pl.metrics.Accuracy()
self.train_acc.update(log_probs, label_batch)
由于标签的错误结果3
应该被忽略。
如何正确使用pl.metrics.Accuracy()
忽略类?
python - PyTorch Lightning:在检查点文件中包含一些张量对象
由于 Pytorch Lightning 为模型检查点提供了自动保存功能,因此我使用它来保存 top-k 最佳模型。特别是在培训师设置中,
这运行良好,但它不保存模型对象的某些属性。我的模型在每个训练时期结束时都会存储一些张量,这样
这是一个简化的示例,但我希望上面制作的检查点文件checkpoint_callback
记住该属性self.some_data
,但是当我从检查点加载模型时,它总是重置为None
. 我确认它在培训期间成功更新。
我尝试不将其初始化为 None ,init
但加载模型时该属性将消失。
我想避免将属性保存为不同的pt
文件,因为它与模型配置相关联,因此我稍后需要手动将文件与相应的检查点文件匹配。
是否可以在检查点文件中包含这样的张量属性?
pytorch - 使用 pytorch 闪电的不同测试结果
我使用 Pytorch Lightning 来训练一个小的 NN 转移学习)和膜翅目照片(灵感来自这里)。
在test_step方法中,它打印真实的类 ( classes ) 和预测 ( preds )。训练后,我做同样的事情(验证步骤),但得到不同的结果。
这是test_step方法的第一个输出:
现在是验证步骤的第一个输出:
两个类是相同的(我检查了图像,它们是相同的),但预测值不同。它从何而来?
machine-learning - 用于直方图匹配的简单 Pytorch 模型不更新其参数
我目前正在尝试拟合一个非常简单的模型,该模型基本上应该为直方图匹配找到最佳直方图。我写了一个超级简单的模型,只有一个我直接使用的 Parameter 对象:
但是由于某种原因,反向传播没有通过并且参数没有得到更新。有人知道问题可能出在哪里吗?梯度实际上是存在的,并且确实会随着批次的变化而变化。我使用 pytorch 闪电删除样板代码,但症结应该在于我编写的代码。
python - VS Code Python TensorBoard 集成不起作用
VS Code 的 Python 扩展最近发布了 TensorBoard 集成,但它似乎对我不起作用。
每当我从命令面板运行“Python:启动 TensorBoard”时,我都会看到 这个屏幕。这是 TensorBoard 页面,默认消息“当前数据集没有活动的仪表板”。命令 palate 命令有两个日志目录选项,“使用当前工作目录”和“选择另一个文件夹”,但似乎都不起作用。
但是,当我使用终端命令正常运行 TensorBoard 时
一切正常。这让我觉得我的日志目录和张量板安装设置得很好,问题出在 VS Code 或 Python 扩展上。
我应该提到我使用 PyTorch 和 PyTorch Lightning 生成了我的日志,而不是 Tensorflow。(对于上下文,我使用的是 macOS Big Sur)
有谁知道修复是什么?
python-3.x - Pytorch GAN 模型未训练:矩阵乘法错误
我正在尝试构建一个基本的 GAN 来熟悉 Pytorch。我对 Keras 有一些(有限的)经验,但由于我必须在 Pytorch 中做一个更大的项目,所以我想首先使用“基本”网络进行探索。
我正在使用 Pytorch 闪电。我想我已经添加了所有必要的组件。我尝试分别通过生成器和鉴别器传递一些噪声,我认为输出具有预期的形状。尽管如此,当我尝试训练 GAN 时出现运行时错误(下面的完整回溯):
RuntimeError: mat1 and mat2 shapes cannot be multiplied (7x9 and 25x1)
我注意到 7 是批次的大小(通过打印出批次尺寸),即使我将 batch_size 指定为 64。除此之外,老实说,我不知道从哪里开始:错误回溯没有帮我。
很可能,我犯了多个错误。但是,我希望你们中的一些人能够从代码中发现当前的错误,因为乘法错误似乎指向某个地方的维度问题。这是代码。
完整追溯:
python - 如何检查 Pytorch 闪电中的验证指标?
使用以下代码片段记录指标时:
和
我证实__common_epoch_end_report
确实输入了 withmode='train'
和 with mode='validation'
。
但是,只有从中记录的指标train
可用于检查点:
收到以下错误:
如何允许通过 Pytorch-lightning 中的验证指标进行检查?
python - Pytorch-lightning 中的 `on_validation_epoch_end` 和 `validation_epoch_end` 有什么区别?
在内部LightningModule
,Pycharm 允许 2 种自动完成方法:
与on_validation_epoch_end
参考hooks.py
和
validation_epoch_end
称为导致。evaluation_loop.py
_eval_results = model.validation_epoch_end(eval_results)
__run_eval_epoch_end
每个人的目的是什么?
我只能假设一个已被弃用。找不到任何相关文档。