一次热编码巨大的 3D 阵列
One hot encoding huge 3D array
作为标题,我的数据如下所示:
["test", "bob", "romeo"]
- 等等只是随机词
我已经根据单词中每个字母在字母表中的位置将它们转换为数字,所以现在它是:
[[19, 4, 18, 19], [1, 14, 1], [17, 14, 12, 4, 14]]
现在我想 hot-encode 它
tf.one_hot(featuresVectors, longestWordLen)
结果
ResourceExhaustedError: OOM when allocating tensor with shape[512996,62,62]
你基本上 运行 内存不足。两种可能有帮助的方法是使用更少的特征(例如,计算单词数,只保留前 10000 个左右,其余的 "unknown toekn")来缩小 onehot 的大小。或者您可以在网络中使用嵌入层并直接提供整数。
您 运行 内存不足,这意味着您的设备上没有足够的内存来创建这样的张量。鉴于您的批量大小为 512996
并且您的深度维度为 62
,您正在尝试创建一个 512996x62x62xsizeof(float): ~7.34Go !
的张量
因为索引永远不会大于 26。您可以尝试为该张量使用较小的数据类型,例如 int8
: tf.one_hot(featuresVectors, longestWordLen, dtype=tf.int8)
。
这应该在您的设备上占用 512996x62x62x1: ~1.83 Go
。
如果您的设备仍然无法分配张量,那么您将不得不减小批量大小。 (又名字数)
作为标题,我的数据如下所示:
["test", "bob", "romeo"]
- 等等只是随机词
我已经根据单词中每个字母在字母表中的位置将它们转换为数字,所以现在它是:
[[19, 4, 18, 19], [1, 14, 1], [17, 14, 12, 4, 14]]
现在我想 hot-encode 它
tf.one_hot(featuresVectors, longestWordLen)
结果
ResourceExhaustedError: OOM when allocating tensor with shape[512996,62,62]
你基本上 运行 内存不足。两种可能有帮助的方法是使用更少的特征(例如,计算单词数,只保留前 10000 个左右,其余的 "unknown toekn")来缩小 onehot 的大小。或者您可以在网络中使用嵌入层并直接提供整数。
您 运行 内存不足,这意味着您的设备上没有足够的内存来创建这样的张量。鉴于您的批量大小为 512996
并且您的深度维度为 62
,您正在尝试创建一个 512996x62x62xsizeof(float): ~7.34Go !
因为索引永远不会大于 26。您可以尝试为该张量使用较小的数据类型,例如 int8
: tf.one_hot(featuresVectors, longestWordLen, dtype=tf.int8)
。
这应该在您的设备上占用 512996x62x62x1: ~1.83 Go
。
如果您的设备仍然无法分配张量,那么您将不得不减小批量大小。 (又名字数)