使用ResNet50预训练的权重我试图构建一个分类器。代码库完全在Keras高级Tensorflow API中实现。完整的代码发布在下面的GitHub链接中。
源代码:使用RestNet50架构进行分类
预训练模型的文件大小为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张图像。当我编译脚本时,我得到以下错误
纪元1/1 2018-05-12 13:04:45.847298: W tensorflow/core/框架/allocator.cc:101]分配38535168超过10%的系统内存。2018-05-12 13:04:46.845021: W tensorflow/core/框架/allocator.cc:101]分配37171200超过10%的系统内存。2018-05-12 13:04:47.552176: W Tenorflow/core/框架/allocator.cc:101] 37171200的分配超过了系统内存的10%.2018-05-12 13:04:48.199240: W tenorflow/core/框架/allocator.cc:101] 37171200的分配超过了系统内存的10%.2018-05-12 13:04:48.918930: W tensorflow/core/框架/allocator.cc:101] 37171200的分配超过了系统内存的10%2018-05-12 13:04:49.274137: W tensorflow/core/框架/allocator.cc:101] 19267584的分配超过了系统内存的10%2018-05-12 13:04:49.647061:W tenstorflow/core/框架/allocator.cc:101] 19267584的分配超过了系统内存的10%。2018-05-12 13:04:50.028839: W tenstorflow/core/框架/allocator.cc:101] 19267584的分配超过了系统内存的10%。2018-05-12 13:04:50.413735: W tenorflow/core/framework/allocator.cc:101] 19267584的分配超过了系统内存的10%。
有没有办法优化加载预训练模型的方式(或)消除此警告消息?
谢谢
或者,您可以设置环境变量TF\u CPP\u MIN\u LOG\u LEVEL=2
以过滤信息和警告消息。我发现在这个github问题上,他们抱怨相同的输出。要在python中实现这一点,您可以使用以下解决方案:
import os
import tensorflow as tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
你甚至可以用这个随意打开和关闭它。在运行代码之前,我会测试最大可能的批处理大小,并且可以在执行此操作时禁用警告和错误。
我在运行带有Docker和Jupyter笔记本的Tensorflow容器时遇到了同样的问题。我能够通过增加容器内存来解决这个问题。
在Mac OS上,您可以通过以下方式轻松完成此操作:
Docker Icon > Preferences > Advanced > Memory
拖动滚动条到最大值(例如。4GB)。应用,它将重新启动Docker引擎。
现在再次运行张量流容器。
在单独的终端中使用docker stats
命令非常方便。它实时显示了容器内存使用情况,您可以看到内存消耗量正在增长:
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
尝试将“批次大小”属性减少为一个较小的数字(如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'
)
我使用Keras/Tensorflow在python中创建了一个程序。我对数据的创建和训练没有任何问题。但是,当我想评估我的模型时,我有以下错误: 这似乎是一个内存分配问题。我缩小了模型的尺寸,缩小了所有参数,但没有任何变化。我不知道如何解决这个问题。
我正在尝试使用我的GPU而不是CPU来训练一个自定义的对象检测模型。我遵循了以下教程中给出的所有说明:https://tensorflow-object-detection-api-tutorial.readthedocs.io/ 我已经测试了我的软件,一切都已安装并正常工作。 目前正在使用: Windows 10 但问题是,在训练几秒钟后,它停止使用GPU,并发出以下警告消息。 此外,我没有在我
问题内容: 每次从stdin读取字母“ u”时,此代码段将分配2Gb,并且在读取“ a”后将初始化所有分配的字符。 我在具有3Gb内存的linux虚拟机上运行此代码。在使用htop工具监视系统资源使用情况时,我已经意识到malloc操作不会反映在资源上。 例如,当我仅输入一次“ u”(即分配2GB的堆内存)时,我看不到htop中的内存使用量增加2GB。只有当我输入“ a”(即初始化)时,我才会看到
我用Tensorflow后端在Keras上做了一个CNN,我的训练集有144个例子,但是每个例子的大小为3200*101。我的CNN是非常基本的,只是为了学习,batch_size2(我试着从32减少,但没有任何改善)。一个CNN层,一个展平层和一个密集层用于输出(11类)。当我符合模型时,我的笔记本电脑显示“分配(一个大数字)超过系统内存的10”,然后冻结,即使没有运行1个时代。我不能“压缩”这
我在运行OSX 10.13.6的Mac上有PHP版本7.2.9。如果我加载phpinfo(),我在Safari中看到memory_limit=256M。然而,当我看php.ini(/usr/本地/php5/lib/php.ini)memory_limit=128M。这种差异的原因是什么——显然限制是在其他地方设定的,但是在哪里?我需要增加内存限制
问题内容: 这是一篇受此评论启发的帖子,内容涉及如何在CPython中为对象分配内存。最初,这是在创建列表并将其添加到for循环中_以_ 实现列表理解的上下文中。 所以这是我的问题: CPython中有多少个不同的分配器? 每个功能是什么? 什么时候被正式称为?(根据此评论中的内容,列表理解可能不会导致调用, python在启动时会为其分配多少内存? 是否有规则来控制哪些数据结构在此存储器上首先获