为什么我的笔记本电脑有时会在我执行此过程时死机
Why does my laptop freeze sometimes when i excute this process
我正在创建一个食物数据集来训练我的模型,我使用 glob 模块读取目录中的图像并使用 matplotlib 读取每个图像数据,但是有时这会使我的笔记本电脑死机,这让我不得不关闭它!
以下代码(有时)导致此
data_dir ="/home/moumenshobaky/tensorflow_files/virtualenv/archive/training/Egg/*"
train_x = []
train_x.clear()
for filename in glob.glob(data_dir):
train_x.append(mpimg.imread(filename).tolist())
data_dir ="/home/moumenshobaky/tensorflow_files/virtualenv/archive/training/Meat/*"
for filename2 in glob.glob(data_dir):
train_x.append(mpimg.imread(filename2).tolist())
有时行代码也会导致同样的事情
train_x_float = pixel/255.0 for pixel in train_x
您正在创建一个列表,其中存储了您驱动器上的所有图像。
考虑使用生成器(为你的训练准备数据),冻结是正常的,因为你使用了大量的 RAM 内存;否则,如果您仍想进行一些分析,只需加载数据集的一部分。通过始终将 numpy 数组(加载的图像)转换为列表来完成一些小的开销,您消除了转换。
您可以使用此代码段来检查内存使用情况:
from sys import getsizeof
size_of_list_in_bytes = getsizeof(train_x)
size_of_list_in_mb = size_of_list_in_bytes / 1000000 (6 zeros).
关于生成器的使用,如果你使用TensorFlow或Keras,你可以看看Sequence
:https://www.tensorflow.org/api_docs/python/tf/keras/utils/Sequence或ImageDataGenerator
。这真的取决于任务,我推荐前者,因为它更灵活。最后但同样重要的是,tf.data.Dataset()
正变得越来越普遍。其中每一个都提供内置生成器。
我正在创建一个食物数据集来训练我的模型,我使用 glob 模块读取目录中的图像并使用 matplotlib 读取每个图像数据,但是有时这会使我的笔记本电脑死机,这让我不得不关闭它!
以下代码(有时)导致此
data_dir ="/home/moumenshobaky/tensorflow_files/virtualenv/archive/training/Egg/*"
train_x = []
train_x.clear()
for filename in glob.glob(data_dir):
train_x.append(mpimg.imread(filename).tolist())
data_dir ="/home/moumenshobaky/tensorflow_files/virtualenv/archive/training/Meat/*"
for filename2 in glob.glob(data_dir):
train_x.append(mpimg.imread(filename2).tolist())
有时行代码也会导致同样的事情
train_x_float = pixel/255.0 for pixel in train_x
您正在创建一个列表,其中存储了您驱动器上的所有图像。
考虑使用生成器(为你的训练准备数据),冻结是正常的,因为你使用了大量的 RAM 内存;否则,如果您仍想进行一些分析,只需加载数据集的一部分。通过始终将 numpy 数组(加载的图像)转换为列表来完成一些小的开销,您消除了转换。
您可以使用此代码段来检查内存使用情况:
from sys import getsizeof
size_of_list_in_bytes = getsizeof(train_x)
size_of_list_in_mb = size_of_list_in_bytes / 1000000 (6 zeros).
关于生成器的使用,如果你使用TensorFlow或Keras,你可以看看Sequence
:https://www.tensorflow.org/api_docs/python/tf/keras/utils/Sequence或ImageDataGenerator
。这真的取决于任务,我推荐前者,因为它更灵活。最后但同样重要的是,tf.data.Dataset()
正变得越来越普遍。其中每一个都提供内置生成器。