首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow分配内存: 38535168的分配超过系统内存的10%

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

Stack Overflow用户
提问于 2018-05-12 08:09:09
回答 9查看 108.2K关注 0票数 57

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

源代码:基于RestNet50体系结构的分类

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

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

代码语言:javascript
复制
new_model = Sequential()

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

并拟合模型

代码语言:javascript
复制
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张图片。当我编译脚本时,我得到以下错误

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

有什么想法来优化加载预先训练过的模型(或)的方式来消除这个警告信息吗?

谢谢!

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2018-07-16 17:55:37

尝试将batch_size属性简化为一个小数目(如1、2或3)。示例:

代码语言:javascript
复制
train_generator = data_generator.flow_from_directory(
    'path_to_the_training_set',
    target_size = (IMG_SIZE,IMG_SIZE),
    batch_size = 2,
    class_mode = 'categorical'
    )
票数 36
EN

Stack Overflow用户

发布于 2019-03-19 17:35:41

我在使用带有码头和木星笔记本的Tensorflow容器时也遇到了同样的问题。我能够通过增加容器内存来解决这个问题。

Mac 上,您可以很容易地从以下几个方面进行操作:

代码语言:javascript
复制
       Docker Icon > Preferences >  Advanced > Memory

将滚动条拖到最大值(例如,4GB)。应用,它将重新启动码头引擎。

现在再次运行张量流容器。

在一个单独的终端中使用docker stats命令非常方便,它可以实时显示容器内存的使用情况,并且您可以看到内存消耗正在增加:

代码语言:javascript
复制
CONTAINER ID   NAME   CPU %   MEM USAGE / LIMIT     MEM %    NET I/O             BLOCK I/O           PIDS
3170c0b402cc   mytf   0.04%   588.6MiB / 3.855GiB   14.91%   13.1MB / 3.06MB     214MB / 3.13MB      21
票数 21
EN

Stack Overflow用户

发布于 2018-11-28 20:59:32

或者,您可以设置环境变量TF_CPP_MIN_LOG_LEVEL=2来筛选出信息和警告消息。我在github问题,他们抱怨相同的输出上发现的。要在python中这样做,可以使用这里中的解决方案。

代码语言:javascript
复制
import os
import tensorflow as tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

你甚至可以随心所欲地打开和关闭它。在运行代码之前,我会测试最大可能的批处理大小,并且可以在执行此操作时禁用警告和错误。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50304156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档