【发布时间】: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