[Введение в искусственный интеллект] PyTorch исправляет некоторые параметры для реализации обучения указанных параметров слоя и возникающих проблем.

[Введение в искусственный интеллект] PyTorch исправляет некоторые параметры для реализации обучения указанных параметров слоя и возникающих проблем.


1. Описание проблемы

  • После загрузки параметров модели зафиксируйте параметры некоторых слоев и обучите оставшиеся слои.

2. Реализация кода

  1. При установке условий параметры, соответствующие условиям, не обновляются.Код выглядит следующим образом.
for name, param in model.named_parameters(): # 遍历所有参数块
	if 'fc_offset' not in name: # 设置要求
		param.requires_grad = False  # 对符合要求的参数设置不更新
	# print(name, param.requires_grad)  # 显示所有模型模块,以及梯度情况
  1. Используйте фильтр для фильтрации параметров, чтобы оптимизатор не обновлял все параметры.
params = filter(lambda p: p.requires_grad, model.parameters())
optimizer = torch.optim.Adam(params, lr=learning_rate)
  • Вот и все

3. Возникшие проблемы — RuntimeError: элемент 0 тензоров не требует grad и не имеет grad_fn.

  • Эта проблема показывает, что градиент потерь отключен, то есть require_grad(False) потерь.
  • Это должно быть связано с тем, что если градиент последнего слоя параметров модели отключен, рассчитанные потери не будут иметь градиента и не могут быть отслежены, поэтому для градиента потерь необходимо вручную установить значение True.
  • Например:
loss.requires_grad_(True)  
loss.backward()

Je suppose que tu aimes

Origine blog.csdn.net/qq_44928822/article/details/130759332
conseillé
Classement