Я пытаюсь реализовать модель классификатора PuVAE в соответствии с шаблоном Lightning Hydra. После обучения я хочу использовать атаку дурака (FGSM и PGD) на этапе тестирования моей модели, но получил эту ошибку. Я знаю, что FGSM и PGD требуют градиента для атаки, и я уже установил свой классификатор в режим обучения на этапе тестирования, x.requires_grad = True
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/lightning/pytorch/loops/evaluation_loop.py", line 135, in run
self._evaluation_step(batch, batch_idx, dataloader_idx, dataloader_iter)
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/lightning/pytorch/loops/evaluation_loop.py", line 396, in _evaluation_step
output = call._call_strategy_hook(trainer, hook_name, *step_args)
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/lightning/pytorch/trainer/call.py", line 319, in _call_strategy_hook
output = fn(*args, **kwargs)
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/lightning/pytorch/strategies/strategy.py", line 425, in test_step
return self.lightning_module.test_step(*args, **kwargs)
File "/mnt/apple/k66/ptrang/PuVAE/src/models/classifier_module.py", line 186, in test_step
self.foolbox_attack(x, y)
File "/mnt/apple/k66/ptrang/PuVAE/src/models/classifier_module.py", line 214, in foolbox_attack
fgsm_images, _, success_fgsm = fgsm_attack(fmodel, x, labels, epsilons=0.1) # Adjust epsilon as needed
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/foolbox/attacks/base.py", line 283, in __call__
xp = self.run(model, x, criterion, epsilon=epsilon, **kwargs)
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/foolbox/attacks/fast_gradient_method.py", line 98, in run
return super().run(
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/foolbox/attacks/gradient_descent_base.py", line 155, in run
_, gradients = self.value_and_grad(loss_fn, x)
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/foolbox/attacks/gradient_descent_base.py", line 111, in value_and_grad
return ep.value_and_grad(loss_fn, x)
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/eagerpy/framework.py", line 360, in value_and_grad
return t.value_and_grad(f, *args, **kwargs)
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/eagerpy/tensor/tensor.py", line 553, in value_and_grad
return self._value_and_grad_fn(f, has_aux=False)(self, *args, **kwargs)
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/eagerpy/tensor/pytorch.py", line 507, in value_and_grad
loss.backward()
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/torch/_tensor.py", line 581, in backward
torch.autograd.backward(
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/torch/autograd/__init__.py", line 347, in backward
_engine_run_backward(
File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/torch/autograd/graph.py", line 825, in _engine_run_backward
return Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
Я пытаюсь реализовать модель классификатора PuVAE в соответствии с шаблоном Lightning Hydra. После обучения я хочу использовать атаку дурака (FGSM и PGD) на этапе тестирования моей модели, но получил эту ошибку. Я знаю, что FGSM и PGD требуют градиента для атаки, и я уже установил свой классификатор в режим обучения на этапе тестирования, x.requires_grad = True [code]from typing import Any, Dict, Tuple
import torch import torch.nn.functional as F from lightning import LightningModule from torchmetrics import MeanMetric from torchmetrics.image import PeakSignalNoiseRatio, StructuralSimilarityIndexMeasure from torchmetrics.classification.accuracy import Accuracy from torchvision.utils import make_grid from src.models.components.classifier import Classifier from src.models.components.puvae_model import PuVAE import foolbox as fb
:param net: The model to train. :param optimizer: The optimizer to use for training. :param scheduler: The learning rate scheduler to use for training. """ super().__init__()
# this line allows to access init params with 'self.hparams' attribute # also ensures init params will be stored in ckpt self.save_hyperparameters(logger=False)
classifier_ckpt = torch.load(pretrained_classifier_path, map_location=self.device) state_dict = classifier_ckpt['state_dict'] new_state_dict = {k.replace('net.', ''): v for k, v in state_dict.items()} self.classifier.load_state_dict(new_state_dict) self.classifier.eval() for param in self.classifier.parameters(): param.requires_grad = False
def forward(self, x, y) -> torch.Tensor: """Perform a forward pass through the model `self.net`.
:param x: A tensor of images. :return: A tensor of logits. """ return self.net(x, y)
def model_step( self, batch: Tuple[torch.Tensor, torch.Tensor] ) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]: """Perform a single model step on a batch of data.
:param batch: A batch of data (a tuple) containing the input tensor of images and target labels.
:return: A tuple containing (in order): - A tensor of losses. - A tensor of predictions. - A tensor of target labels. """ x, y = batch reconstruction, kl_loss = self.net(x, y)
def test_step(self, batch: Tuple[torch.Tensor, torch.Tensor], batch_idx: int) -> None: """Perform a single test step on a batch of data from the test set.
:param batch: A batch of data (a tuple) containing the input tensor of images and target labels. :param batch_idx: The index of the current batch. """ with torch.enable_grad(): self.classifier.train() x, y = batch reconstruction, vae_loss= self.model_step(batch) preds = self.classifier(reconstruction)
[/code] При запуске я получаю эту ошибку [code] File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/lightning/pytorch/loops/evaluation_loop.py", line 135, in run self._evaluation_step(batch, batch_idx, dataloader_idx, dataloader_iter) File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/lightning/pytorch/loops/evaluation_loop.py", line 396, in _evaluation_step output = call._call_strategy_hook(trainer, hook_name, *step_args) File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/lightning/pytorch/trainer/call.py", line 319, in _call_strategy_hook output = fn(*args, **kwargs) File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/lightning/pytorch/strategies/strategy.py", line 425, in test_step return self.lightning_module.test_step(*args, **kwargs) File "/mnt/apple/k66/ptrang/PuVAE/src/models/classifier_module.py", line 186, in test_step self.foolbox_attack(x, y) File "/mnt/apple/k66/ptrang/PuVAE/src/models/classifier_module.py", line 214, in foolbox_attack fgsm_images, _, success_fgsm = fgsm_attack(fmodel, x, labels, epsilons=0.1) # Adjust epsilon as needed File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/foolbox/attacks/base.py", line 283, in __call__ xp = self.run(model, x, criterion, epsilon=epsilon, **kwargs) File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/foolbox/attacks/fast_gradient_method.py", line 98, in run return super().run( File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/foolbox/attacks/gradient_descent_base.py", line 155, in run _, gradients = self.value_and_grad(loss_fn, x) File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/foolbox/attacks/gradient_descent_base.py", line 111, in value_and_grad return ep.value_and_grad(loss_fn, x) File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/eagerpy/framework.py", line 360, in value_and_grad return t.value_and_grad(f, *args, **kwargs) File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/eagerpy/tensor/tensor.py", line 553, in value_and_grad return self._value_and_grad_fn(f, has_aux=False)(self, *args, **kwargs) File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/eagerpy/tensor/pytorch.py", line 507, in value_and_grad loss.backward() File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/torch/_tensor.py", line 581, in backward torch.autograd.backward( File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/torch/autograd/__init__.py", line 347, in backward _engine_run_backward( File "/mnt/apple/k66/ptrang/env/puvae/lib/python3.10/site-packages/torch/autograd/graph.py", line 825, in _engine_run_backward return Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn [/code] Кто-нибудь знает решение? Спасибо
Я пытаюсь создать калькулятор с графиком, подтверждающий график, используя Python и Pygame. Полем Он требует выражения пользовательской строки Infix и преобразует его в Postfix для более легких вычислений. Затем я пробегаю и передаю значения x в...
Я пытаюсь создать графический калькулятор с графиком с дураком с помощью Python и Pygame. Он требует выражения пользовательской строки Infix и преобразует его в Postfix для более легких вычислений. Затем я прохожу и передаю значения x в выражение...
runtimeerror с pytorch при тонкой настройке LLM: «Элемент 0 из тензоров не требует grad»
Проблема
Я пытаюсь Точная настроение модели ламы с использованием LORA, но я получаю следующую ошибку во время обучения:
RuntimeError: element 0 of tensors...
Я хочу обучать GAN в Keras 3, насколько это возможно, независимо от бэкэнда, а это означает, что мне не следует использовать низкоуровневый API, такой как tf.GradientTape или что-то связанное с синтаксисом tf. Вместо этого я должен использовать API...