我正在为我的论文使用 3D 卷积神经网络,我正在尝试使用 256x256 张图像、22 个通道、5 张图片的输入来训练网络,使用 8x8 滑动窗口和 90 度旋转数据增强。所以输入大小是(262144,22,8,8,5)。
网络的输入是更大的 10240x10240 图像的图块,因此我需要多次训练模型,以包含我的整个数据集。
我正在使用 60GB 的 RAM,我的计划是:
-
加载一个图块的输入张量。
-
训练模型
-
保存模型
-
在不关闭笔记本的情况下清除 jupyter 内存
-
加载模型
-
加载下一个图块的输入张量
-
继续训练模型
-
保存模型
-
清除记忆并重复
我无法连续加载不同的磁贴,否则会出现内存错误。
我知道使用"del tensor_name"实际上不会删除分配的内存。
此外,使用 %reset -f 似乎只会清除变量,而不会清除整个内存。
Jupyter 适合原型设计,但不适合在同一文件上花费数月的工作。
当我需要开始应用我的代码时,我最终将我的代码放入OOP(面向对象编程)类中,并在多个.py脚本中使用它们。
最后,为了将一个巨大的数据集作为输入,我需要通过继承顺序类来创建自定义 Keras 生成器:https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly