Python 批次的一次热编码将是不完整的tensorflow

Python 批次的一次热编码将是不完整的tensorflow,python,tensorflow,one-hot-encoding,Python,Tensorflow,One Hot Encoding,正如你所知,tf.one_hot可以进行one hot编码。然而,当我的数据集非常大时,我需要进行批量训练。这样,当我使用for循环在所有批次上循环时,在每次迭代中,当我执行tf.one_hot时,一个hot矩阵的维数将比我预期的小 例如,对于“a”列,我们有47个类别,但在一个批次中,它们可能只显示20个,当我在这个批次上执行一个任务时,它将创建一个维度为行*20的矩阵,而不是行*47的矩阵 如何获得每批中一个热矩阵的行数*47的维数 谢谢大家! 第二个参数是depth,它决定了一个热向量的长

正如你所知,tf.one_hot可以进行one hot编码。然而,当我的数据集非常大时,我需要进行批量训练。这样,当我使用for循环在所有批次上循环时,在每次迭代中,当我执行tf.one_hot时,一个hot矩阵的维数将比我预期的小

例如,对于“a”列,我们有47个类别,但在一个批次中,它们可能只显示20个,当我在这个批次上执行一个任务时,它将创建一个维度为行*20的矩阵,而不是行*47的矩阵

如何获得每批中一个热矩阵的行数*47的维数

谢谢大家!

第二个参数是depth,它决定了一个热向量的长度。如果您这样运行操作:

b = tf.one_hot( a, 47 )
最后一个维度应该是47

没有代码很难说,但有些人不会硬编码一个热尺寸,而是尝试从标签张量中获取它,比如

max_class = tf.reduce_max( a )
b = tf.one_hot( a, max_class )
如果在代码中是这样的话,那么可能一批只升到了类20

否则需要看你的代码才能说点什么


如果TensorFlow内存不足,它将因错误而停止,而不会悄悄地删除一半的数据:

谢谢!在我发布这个问题后,我也注意到了这一点。但似乎类别标签应该从0开始,并且是连续的,对吗?比如,如果我的类别是1,5,6,8,10,当我将其设置为5时,如果批次仅包含6,8,5,会发生什么情况,这可能会导致不匹配,对吗?如果您的批次是正确随机的,那么它会到处都是,这是很好的做法!:如果按顺序从类0到类47,可能是它们是连续的,但这将产生不符合标准的网络。随机化为王我不完全明白。。。你是说如果我把深度设为5。批处理中的数据仍然会给出这样的矩阵[[0,0,1,0,0,0],[0,0,0,1,0],[0,1,0,0,0]]?其中子列表中的第一个元素到第五个元素表示1,5,6,8,10。如果将深度设置为5,则一个热向量的长度将始终为5。设置为47,它将始终为47。但是要小心,一个热的是数值固定的,如果你有例如10类,你必须有至少10的深度,否则你会得到一个错误。哦,我现在明白了。非常感谢。