我想构造一个变分自动编码器,其中一个样本是一个 N*M 矩阵,其中每一行有 M 个类别。本质上,一个样本是一个分类数据列表,其中只能选择一个类别 - 一个单热向量列表。
目前,我有一个适用于此类数据的自动编码器 - 我在最后一个维度上使用 softmax 来创建此约束,并且它有效(重建交叉熵很低)。
现在,我想使用 tf.distributions 创建一个变分自动编码器。我想知道什么样的分布才是合适的。
最佳答案
tf.contrib.distributions.Categorical 满足您的需求吗?样本应介于 (0 到 n - 1) 之间,其中 n 代表类别。
示例:
# logits 的形状为 [N, M],其中 M 是类别数
dist = tf.contrib.distributions.Categorical(logits=logits)
# 采样 20 次。应给出形状 [20, N]。
样本= dist.sample(20)
#深度是类别数。
one_hots = tf.one_hot(样本,深度=M)
关于python - 什么 tensorflow 分布来表示分类数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50037919/