作为标题,我的数据如下所示:
["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]
答案 0 :(得分:2)
您基本上用完了内存。两种可能有用的方法是使用较少的功能(例如,对单词进行计数,仅保留前10000个左右,其余保留一个“未知的脚尖”)以减小onehot的大小。或者,您可以在网络中使用嵌入层,然后直接输入整数。
答案 1 :(得分:2)
您的内存不足,这意味着设备上没有足够的内存来创建这样的张量。假设您的批量大小为512996
,深度尺寸为62
,则您尝试创建张量为512996x62x62xsizeof(float): ~7.34Go !
因为索引永远不会大于26。您可以尝试为该张量使用较小的数据类型,例如int8
:tf.one_hot(featuresVectors, longestWordLen, dtype=tf.int8)
。
那应该在您的设备上花费512996x62x62x1: ~1.83 Go
。
如果您的设备仍无法分配张量,则必须减小批大小。 (又称字数)