为 LSTM 模型操作 Pyspark 数据帧
Manipulating Pyspark dataframes for the LSTM model
我正在尝试训练用于文本预测的 LSTM 神经网络。
我有一个数据框,其中包含 350 万个以字符串形式编写的国际象棋游戏。
例如:
我已经解析、标记化并使游戏长度相同。为此,我使用了一个 udf 函数,这样我就有了一个整数列表,用于标识游戏中的移动。
完成此操作后,我的模型将接受形状为 [batch、timesteps、feature] 的 3D 张量作为输入。
(我用的是keras LSTM:https://keras.io/api/layers/recurrent_layers/lstm/)
为此,我想将我的 pyspark 数据帧转换为 pandas 并使用 numpy,但我不能这样做,因为我正在 databricks 社区版上开发它,它总是给我内存不足的问题。
谁能告诉我如何解决这个问题?由于 OOM 问题,我无法将其转换为 pandas 任何人都可以建议我另一种方式吗?
不要将游戏存储为字符串 - 将它们存储为整数或更好的二进制编码值。这种方法会大大减少你的内存存储,而且它会带来更易于计算的额外好处。使用关系模式,您将拥有 games
->moves
,其中 games
将存储人口统计信息(姓名、获胜),而 moves
将只是 [=19] 的列表=]交流
您仍然可以将这些值处理为 strings/words/whatever,因为计算机不需要人类文本来生成模型。当然,如果是生成模型,就得在背面做反向翻译了,不过这就小事了。
我正在尝试训练用于文本预测的 LSTM 神经网络。
我有一个数据框,其中包含 350 万个以字符串形式编写的国际象棋游戏。
例如:
我已经解析、标记化并使游戏长度相同。为此,我使用了一个 udf 函数,这样我就有了一个整数列表,用于标识游戏中的移动。
完成此操作后,我的模型将接受形状为 [batch、timesteps、feature] 的 3D 张量作为输入。 (我用的是keras LSTM:https://keras.io/api/layers/recurrent_layers/lstm/)
为此,我想将我的 pyspark 数据帧转换为 pandas 并使用 numpy,但我不能这样做,因为我正在 databricks 社区版上开发它,它总是给我内存不足的问题。
谁能告诉我如何解决这个问题?由于 OOM 问题,我无法将其转换为 pandas 任何人都可以建议我另一种方式吗?
不要将游戏存储为字符串 - 将它们存储为整数或更好的二进制编码值。这种方法会大大减少你的内存存储,而且它会带来更易于计算的额外好处。使用关系模式,您将拥有 games
->moves
,其中 games
将存储人口统计信息(姓名、获胜),而 moves
将只是 [=19] 的列表=]交流
您仍然可以将这些值处理为 strings/words/whatever,因为计算机不需要人类文本来生成模型。当然,如果是生成模型,就得在背面做反向翻译了,不过这就小事了。