У меня вопрос по поводу использования автоэнкодеров (в PyTorch). У меня есть табличный набор данных с категориальной функцией, который имеет 10 разных категорий. Названия у этих категорий очень разные - некоторые имена состоят из одного слова, некоторые - из двух или трех слов. Но всего у меня есть 10 уникальных названий категорий. Я пытаюсь создать автоэнкодер, который будет кодировать имена этих категорий - например, если у меня есть категория с именем 'Medium size class'
, я хочу посмотреть, можно ли обучить автоэнкодер кодировать это имя как что-то вроде 'mdmsc'
или что-то подобное. Его использование заключалось бы в том, чтобы выяснить, какие точки данных трудно кодировать, а какие нетипичные, или что-то в этом роде. Я пытался адаптировать архитектуру автоэнкодера из различных онлайн-руководств, но, похоже, у меня ничего не работает, или я просто не знаю, как их использовать, поскольку все они связаны с изображениями. Может быть, кто-нибудь знает, как можно реализовать этот тип автокодировщика, если это вообще возможно?
Изменить: вот модель, которая у меня есть (я просто пытался адаптировать некоторые архитектуры, которые нашел в Интернете):
class Autoencoder(nn.Module):
def __init__(self, input_shape, encoding_dim):
super(Autoencoder, self).__init__()
self.encode = nn.Sequential(
nn.Linear(input_shape, 128),
nn.ReLU(True),
nn.Linear(128, 64),
nn.ReLU(True),
nn.Linear(64, encoding_dim),
)
self.decode = nn.Sequential(
nn.Linear(encoding_dim, 64),
nn.ReLU(True),
nn.Linear(64, 128),
nn.ReLU(True),
nn.Linear(128, input_shape)
)
def forward(self, x):
x = self.encode(x)
x = self.decode(x)
return x
model = Autoencoder(input_shape=10, encoding_dim=5)
Также я использую LabelEncoder()
, а затем OneHotEncoder()
, чтобы дать этим функциям / категориям, о которых я упоминал, числовую форму. Однако после обучения вывод такой же, как и ввод (без изменений в названии категории), но когда я пытаюсь использовать только часть кодировщика, я не могу применить LabelEncoder()
, а затем OneHotEncoder()
из-за проблем с размером. Я чувствую, что, может быть, я могу сделать что-то по-другому вначале, затем я пытаюсь придать этим функциям числовую форму, однако я не уверен, что мне делать.