Python 什么tensorflow分布表示分类数据列表

Python 什么tensorflow分布表示分类数据列表,python,tensorflow,machine-learning,Python,Tensorflow,Machine Learning,我想构造一个变分自动编码器,其中一个样本是一个N*M矩阵,其中每行有M个类别。本质上,一个样本是一个分类数据列表,其中只能选择一个类别-一个热向量列表 目前,我有一个用于这类数据的自动编码器——我在最后一个维度上使用softmax来创建此约束,它可以工作(重建交叉熵很低) 现在,我想使用tf.distributions创建一个可变自动编码器。我想知道什么样的分发才合适 tf.contrib.distributions.category是否满足您的需求?样本应该是从(0到n-1),其中n代表类别

我想构造一个变分自动编码器,其中一个样本是一个N*M矩阵,其中每行有M个类别。本质上,一个样本是一个分类数据列表,其中只能选择一个类别-一个热向量列表

目前,我有一个用于这类数据的自动编码器——我在最后一个维度上使用softmax来创建此约束,它可以工作(重建交叉熵很低)


现在,我想使用tf.distributions创建一个可变自动编码器。我想知道什么样的分发才合适

tf.contrib.distributions.category是否满足您的需求?样本应该是从(0到n-1),其中n代表类别

例如:

#logits的形状为[N,M],其中M是类的数量

dist=tf.contrib.distributions.Categorical(logits=logits)

#取样20次。应该形成[20,N]

样本=距离样本(20)

#深度是类别的数量


one_hots=tf.one_hot(示例,深度=M)

tf.contrib.distributions.category是否满足您的需求?样本应该是从(0到n-1),其中n代表类别

例如:

#logits的形状为[N,M],其中M是类的数量

dist=tf.contrib.distributions.Categorical(logits=logits)

#取样20次。应该形成[20,N]

样本=距离样本(20)

#深度是类别的数量


我不明白你的问题到底是什么。通常,您希望潜在向量为单位高斯。例如,在MNIST数据集中,单个像素的概率分布可以用伯努利分布表示。然后,为了构造变分自动编码器的解码器部分,潜在变量(如您所述的正态分布)是784贝努利结果的输入和输出。在我的例子中,结果不仅仅是两个类别,而是n>2个类别。我不明白你的问题到底是什么。通常,您希望潜在向量为单位高斯。例如,在MNIST数据集中,单个像素的概率分布可以用伯努利分布表示。然后,为了构造变分自动编码器的解码器部分,潜在变量(如您所述的正态分布)是784贝努利结果的输入和输出。在我的例子中,结果不仅仅是两个类别,而是n>2个类别。