【问题标题】:Autoencoder to encode features/categories of data自动编码器对数据的特征/类别进行编码
【发布时间】:2020-05-21 17:15:52
【问题描述】:

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

【问题讨论】:

  • 你能分享一下你到目前为止的尝试吗?
  • @jayveesea 我用一些代码编辑了我的初始帖子。

标签: python deep-learning pytorch categorical-data autoencoder


【解决方案1】:

首先,您需要根据将迭代数据点的数据设置一个 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 2020-01-05
    • 1970-01-01
    • 2017-09-21
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多