Как я мог бы создать модуль с обучаемыми параметрами, если один набор параметров относится к классу набора данных

#deep-learning #pytorch

Вопрос:

Итак, у меня есть модель с некоторыми параметрами, которые мне нужно тренировать. А также, в наборе данных класса есть некоторые параметры(torch.utils.data.Набор данных) , которые выполняют некоторую предварительную обработку. Мне также нужно обучить их параметрам модели. Итак, не могли бы вы, пожалуйста, дать мне знать, правильно ли то, что я делаю:

 params = list(model.parameters()) params.extend(list(Dataset.parameters())) opt = torch.optim.Adam(params,lr=1e-4)  

Еще один вопрос. Поскольку класс набора данных будет генерировать как train_ds, так и val_ds, мне нужно только обучить параметры класса набора данных при получении train_ds. И чтобы получить val_ds, мне нужно использовать обученные параметры набора данных. Итак, как мне создать train_ds и val_ds? Должен ли я сначала создать их оба, а затем обучить модель с помощью tarin_ds, а затем создать их снова и использовать val_ds для тестирования?

Ответ №1:

Dataset класс не имеет .parameters — он используется только для обработки данных.
ваш класс модели является производным от nn.Module класса, который имеет .parameters и может быть обучен.
Похоже, вам нужно добавить обучаемую предварительную обработку в свою модель, а не включать ее в свой класс набора данных.

Комментарии:

1. Как насчет того, чтобы в классе набора данных я добавил некоторый параметр с requires_grad = True и использовал params.extend(список(Dataset.parameters()))?