自动编码器对数据的特征/类别进行编码



我的问题是关于自动编码器的使用(在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()。我觉得也许我可以在开始时做一些不同的事情,然后我尝试给这些功能数字形式,但我不确定我应该怎么做。

首先,您需要根据将迭代数据点的数据设置一个train_loader。

然后你需要弄清楚你将使用什么样的损失和优化器:

# mean-squared error loss
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=.001)  #learning rate depend on your task

准备就绪后,您可以使用基本步骤训练自动编码器:

for epoch in range(epochs):
for features in train_loader:
optimizer.zero_grad()
outputs = model(batch_features)
train_loss = criterion(outputs, features)
train_loss.backward()
optimizer.step()

模型完成训练后,您可以使用以下方法检查嵌入:

embedding = model.encode(your_input)

相关内容

  • 没有找到相关文章

最新更新