【问题标题】:One hot encoding huge 3D array一个热编码巨大的 3D 阵列
【发布时间】:2018-11-13 15:19:59
【问题描述】:

作为标题,我的数据如下所示: ["test", "bob", "romeo"] - 等等只是随机词 我已经根据单词中每个字母在字母表中的位置将它们转换为数字,所以现在应该是:

[[19, 4, 18, 19], [1, 14, 1], [17, 14, 12, 4, 14]]

现在我想对其进行热编码

tf.one_hot(featuresVectors, longestWordLen)

结果

ResourceExhaustedError: OOM when allocating tensor with shape[512996,62,62]

【问题讨论】:

    标签: python tensorflow one-hot-encoding


    【解决方案1】:

    您的内存不足,这意味着您的设备上没有足够的内存来创建这样的张量。鉴于您的批量大小为512996,深度维度为62,您正在尝试创建512996x62x62xsizeof(float): ~7.34Go ! 的张量

    由于索引永远不会大于 26。您可以尝试为此张量使用较小的数据类型,例如 int8:tf.one_hot(featuresVectors, longestWordLen, dtype=tf.int8)。 这应该在您的设备上使用512996x62x62x1: ~1.83 Go

    如果您的设备仍然无法分配张量,那么您将不得不减少批量大小。 (又名字数)

    【讨论】:

      【解决方案2】:

      基本上你的内存用完了。两种可能有所帮助的方法是使用更少的特征(例如,计算单词并只保留前 10000 个左右的单词,其余的使用“未知的 toekn”)来使 onehot 的大小更小。或者,您可以在网络中使用嵌入层并直接输入整数。

      【讨论】:

        猜你喜欢
        • 2012-11-13
        • 2011-05-01
        • 2020-06-01
        • 2023-03-18
        • 2016-12-03
        • 2020-11-27
        • 2020-03-31
        • 2018-12-27
        • 2020-03-14
        相关资源
        最近更新 更多