在Pytorch-Lightning中,您通常不必指定 cuda 或 gpu。torch.normal但是当我想使用我创建一个高斯采样张量时
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!
Run Code Online (Sandbox Code Playgroud)
那么,我必须如何更改才能torch.normal使 pytorch-lightning 正常工作?因为我在 cpu和gpu上的不同机器上使用代码
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!
Run Code Online (Sandbox Code Playgroud) Pytorch关于 Dataloaders 的文档仅在代码中说明
def prepare_data(self):
# download
...
Run Code Online (Sandbox Code Playgroud)
和
def setup(self, stage: Optional[str] = None):
# Assign train/val datasets for use in dataloaders
Run Code Online (Sandbox Code Playgroud)
prepare_data请解释和之间的预期分离setup、它们之间可能发生什么回调,以及为什么将某些内容放在一个而不是另一个中。
我正在尝试导入 python 程序的 Lightning 包,但不断收到此错误消息:无法从 'pydantic.main' (c:\Users\mt767\AppData\Local\Programs\Python\Python310 导入名称 'ModelMetaclass' \lib\site-packages\pydantic\main.py)。
我已检查 pydantic 软件包是否是最新的,并尝试卸载并重新安装它。我在网上找到的解决方案都不起作用。代码只是简单地导入lightning包:
import lightning
我想使用预先训练的 BERT 模型,以便将其用于文本分类任务(我正在使用 Huggingface 库)。然而,预训练模型是在与我的不同的领域进行训练的,并且我有一个大型未注释的数据集,可用于对其进行微调。如果我仅使用标记的示例并在特定任务(BertForSequenceClassification)训练时“随时”对其进行微调,则数据集太小,无法适应特定领域的语言模型。这样做的最好方法是什么?谢谢!
nlp text-classification bert-language-model huggingface-transformers pytorch-lightning
我正在使用 Pytorch Lighting 和 Tensorboard,因为 PyTorch Forecasting 库是使用它们构建的。我想通过 matplotlib 创建自己的损失曲线,并且不想使用 Tensorboard。
是否可以通过方法访问每个时期的指标?验证损失、训练损失等?
我的代码如下:
logger = TensorBoardLogger("logs", name = "model")
trainer = pl.Trainer(#Some params)
Run Code Online (Sandbox Code Playgroud)
记录员或培训师是否有任何方法来访问此信息?
PL 文档不清楚,并且有许多与记录器和训练器相关的方法。
在 CPU 上使用 PyTorch Lightning 时,一切正常。然而,当使用 GPU 时,我得到一个RuntimeError: Expected all tensors to be on the same device.
问题似乎来自于使用未传递给 GPU 的子模型列表的模型:
class LambdaLayer(LightningModule):
def __init__(self, fun):
super(LambdaLayer, self).__init__()
self.fun = fun
def forward(self, x):
return self.fun(x)
class TorchModel(LightningModule):
def __init__(self):
super(TorchModel, self).__init__()
self.cat_layers = [TorchCatEmbedding(cat) for cat in columns_to_embed]
self.num_layers = [LambdaLayer(lambda x: x[:, idx:idx+1]) for _, idx in numeric_columns]
self.ffo = TorchFFO(len(self.num_layers) + sum([embed_dim(l) for l in self.cat_layers]), y.shape[1])
self.softmax = torch.nn.Softmax(dim=1)
model = TorchModel()
trainer = Trainer(gpus=-1) …Run Code Online (Sandbox Code Playgroud) 我正在 Pytorch Lightning 中使用 U-Net。我能够成功训练模型,但训练后当我尝试从检查点加载模型时出现此错误:
完整回溯:
Traceback (most recent call last):
File "src/train.py", line 269, in <module>
main(sys.argv[1:])
File "src/train.py", line 263, in main
model = Unet.load_from_checkpoint(checkpoint_callback.best_model_path)
File "/home/africa_wikilimo/miniconda3/envs/xarray_test/lib/python3.8/site-packages/pytorch_lightning/core/saving.py", line 153, in load_from_checkpoint
model = cls._load_model_state(checkpoint, *args, strict=strict, **kwargs)
File "/home/africa_wikilimo/miniconda3/envs/xarray_test/lib/python3.8/site-packages/pytorch_lightning/core/saving.py", line 190, in _load_model_state
model = cls(*cls_args, **cls_kwargs)
File "src/train.py", line 162, in __init__
self.inc = double_conv(self.n_channels, 64)
File "src/train.py", line 122, in double_conv
nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1),
File "/home/africa_wikilimo/miniconda3/envs/xarray_test/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 406, in __init__
super(Conv2d, self).__init__(
File "/home/africa_wikilimo/miniconda3/envs/xarray_test/lib/python3.8/site-packages/torch/nn/modules/conv.py", line …Run Code Online (Sandbox Code Playgroud) python artificial-intelligence deep-learning pytorch pytorch-lightning
我注意到 Pytorch Lightning 的文档中提到,您可以通过调用self(x). 我无法找到任何有关其工作原理的信息。我一直以为你会使用调用该方法self.forward
显然,它调用了forward方法,但是如何调用呢?有没有关于正在发生的事情的 python 文档?
我在以下网址找到了这个: https://pytorch-lightning.readthedocs.io/en/stable/new-project.html
具体代码片段是这样的:
def training_step(self, batch, batch_idx):
...
z = self(x)
Run Code Online (Sandbox Code Playgroud) 有人可以分解代码并向我解释吗?需要帮助的部分用“#Thispart”表示。我将非常感谢任何帮助,谢谢
def validation_epoch_end(self, outputs):
batch_losses = [x["val_loss"]for x in outputs] #This part
epoch_loss = torch.stack(batch_losses).mean()
batch_accs = [x["val_acc"]for x in outputs] #This part
epoch_acc = torch.stack(batch_accs).mean()
return {'val_loss': epoch_loss.item(), 'val_acc': epoch_acc.item()}
def epoch_end(self, epoch, result):
print("Epoch [{}], val_loss: {:.4f}, val_acc: {:.4f}".format( epoch,result['val_loss'], result['val_acc'])) #This part
Run Code Online (Sandbox Code Playgroud) 我正在使用拥抱面部模型训练多标签分类问题。我正在使用 Pytorch Lightning 来训练模型。
这是代码:
当损失最后没有改善时,就会触发提前停止
early_stopping_callback = EarlyStopping(monitor='val_loss', patience=2)
Run Code Online (Sandbox Code Playgroud)
我们可以开始训练过程:
checkpoint_callback = ModelCheckpoint(
dirpath="checkpoints",
filename="best-checkpoint",
save_top_k=1,
verbose=True,
monitor="val_loss",
mode="min"
)
trainer = pl.Trainer(
logger=logger,
callbacks=[early_stopping_callback],
max_epochs=N_EPOCHS,
checkpoint_callback=checkpoint_callback,
gpus=1,
progress_bar_refresh_rate=30
)
# checkpoint_callback=checkpoint_callback,
Run Code Online (Sandbox Code Playgroud)
一旦我运行这个,我就会得到这个错误:
~/.local/lib/python3.6/site-packages/pytorch_lightning/trainer/connectors/callback_connector.py in _configure_checkpoint_callbacks(self, checkpoint_callback)
75 if isinstance(checkpoint_callback, Callback):
76 error_msg += " Pass callback instances to the `callbacks` argument in the Trainer constructor instead."
---> 77 raise MisconfigurationException(error_msg)
78 if self._trainer_has_checkpoint_callbacks() and checkpoint_callback is False:
79 raise MisconfigurationException(
MisconfigurationException: Invalid type provided for checkpoint_callback: Expected bool …Run Code Online (Sandbox Code Playgroud)