model.training = False
переводит модуль в режим оценки, т. Е.
if model.training == True:
# Train mode
if model.training == False:
# Evaluation mode
Таким образом, эффективно такие слои, как выпадание, групповой поток и т. Д., Которые ведут себя по-разному в поезде и в процедурах испытаний, знают, что происходит, и, следовательно, могут вести себя соответствующим образом.
пока
for param in model.parameters():
param.require_grad = False
заморозить слои, чтобы эти слои не были обучаемыми.
Основная идея заключается в том, что все модели имеют функцию model.children (), которая возвращает его слои. В каждом слое есть параметры (или веса), которые можно получить с помощью .param () на любом дочернем элементе (то есть слое). Теперь каждый параметр имеет атрибут с именем requires_grad
, который по умолчанию равен True. True означает, что он будет обратно распространен, и, следовательно, чтобы заморозить слой, вам нужно установить для require_grad значение False для всех параметров слоя.