<p>在我创建一个训练国际象棋位置的神经网络的项目中,我从database.lichess.org下载了7000万个游戏,从每一个游戏中提取出每一步的位置,并将赢、输和画的位置保存到不同的文件中</p>
<p>我现在几乎可以开始训练我的神经网络了,但是如果我现在开始训练的话,这些位置将通过游戏聚集在一起——例如,前90个位置(每半步后的45步游戏)将来自同一个游戏。这意味着几乎整个训练迭代都会严重偏向于某场比赛的结果</p>
<p>显而易见的解决方案是将文本文件中的每一行随机化,但我知道的唯一方法是:</p>
<pre><code>import random as rand
def shuffle_lines(textfile_location):
textfile_lines_list = []
with open(textfile_location, "r") as textfile:
for line in textfile.readlines():
textfile_lines_list.append(line)
rand.shuffle(textfile_lines_list)
with open(textfile_location, "w") as textfile:
textfile.truncate()
for line in textfile_lines_list:
textfile.write(line)
</code></pre>
<p>由于我正在洗牌的数据量很大(~70'000'000个游戏*70个半步=~4'900'000'000个位置),我担心这将花费大量时间,因为我首先必须将文本文件中的每个项目复制到列表中,然后洗牌列表,然后将列表复制回文本文件</p>
<p>有没有更有效的方法来实现这一点,例如在不复制到列表的情况下洗牌文本文件</p>