首页 文章

Tensorflow分配内存:38535168的分配超过系统内存的10%

提问于
浏览
12

使用ResNet50预训练的权重我正在尝试构建一个分类器 . 代码库完全在Keras高级Tensorflow API中实现 . 完整的代码发布在下面的GitHub链接中 .

资料来源:Classification Using RestNet50 Architecture

预训练模型的文件大小为 94.7mb .

我加载了预先训练好的文件

new_model = Sequential()

new_model.add(ResNet50(include_top=False,
                pooling='avg',
                weights=resnet_weight_paths))

并适合模型

train_generator = data_generator.flow_from_directory(
    'path_to_the_training_set',
    target_size = (IMG_SIZE,IMG_SIZE),
    batch_size = 12,
    class_mode = 'categorical'
    )

validation_generator = data_generator.flow_from_directory(
    'path_to_the_validation_set',
    target_size = (IMG_SIZE,IMG_SIZE),
    class_mode = 'categorical'
    )

#compile the model

new_model.fit_generator(
    train_generator,
    steps_per_epoch = 3,
    validation_data = validation_generator,
    validation_steps = 1
)

在训练数据集中,我有两个文件夹狗和猫,每个持有近10,000张图像 . 当我编译脚本时,我收到以下错误

Epoch 1/1 2018-05-12 13:04:45.847298:W tensorflow / core / framework / allocator.cc:101] 38535168的分配超过系统内存的10% . 2018-05-12 13:04:46.845021:W tensorflow / core / framework / allocator.cc:101] 37171200的分配超过系统内存的10% . 2018-05-12 13:04:47.552176:W tensorflow / core / framework / allocator.cc:101] 37171200的分配超过系统内存的10% . 2018-05-12 13:04:48.199240:W tensorflow / core / framework / allocator.cc:101] 37171200的分配超过系统内存的10% . 2018-05-12 13:04:48.918930:W tensorflow / core / framework / allocator.cc:101] 37171200的分配超过系统内存的10% . 2018-05-12 13:04:49.274137:W tensorflow / core / framework / allocator.cc:101] 19267584的分配超过系统内存的10% . 2018-05-12 13:04:49.647061:W tensorflow / core / framework / allocator.cc:101] 19267584的分配超过系统内存的10% . 2018-05-12 13:04:50.028839:W tensorflow / core / framework / allocator.cc:101] 19267584的分配超过系统内存的10% . 2018-05-12 13:04:50.413735:W tensorflow / core / framework / allocator.cc:101] 19267584的分配超过系统内存的10% .

任何想法来优化加载预训练模型(或)的方法摆脱这个警告信息?

谢谢!

2 回答

  • 1

    尝试将batch_size属性减少为较小的数字(如1,2或3) . 示例:train_generator = data_generator.flow_from_directory('path_to_the_training_set',target_size =(IMG_SIZE,IMG_SIZE),batch_size = 2,class_mode ='categorical')

  • 6

    或者,您可以设置环境变量 TF_CPP_MIN_LOG_LEVEL=2 以过滤掉信息和警告消息 . 我发现this github issue where they complain about the same output . 要在python中执行此操作,您可以使用here中的解决方案:

    import os
    import tensorflow as tf
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
    

    您甚至可以随意打开和关闭它 . 我在运行代码之前测试了最大可能的批量大小,并且我可以在执行此操作时禁用警告和错误 .

相关问题