使用ResNet50预先训练的权重,我正在尝试构建一个分类器。代码库在Keras高级Tensorflow API中完全实现.完整的代码发布在下面的GitHub链接中。
预训练模型的文件大小为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/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%。
有什么想法来优化加载预先训练过的模型(或)的方式来消除这个警告信息吗?
谢谢!
发布于 2018-07-16 17:55:37
尝试将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'
)发布于 2019-03-19 17:35:41
我在使用带有码头和木星笔记本的Tensorflow容器时也遇到了同样的问题。我能够通过增加容器内存来解决这个问题。
在Mac 上,您可以很容易地从以下几个方面进行操作:
Docker Icon > Preferences > Advanced > Memory将滚动条拖到最大值(例如,4GB)。应用,它将重新启动码头引擎。
现在再次运行张量流容器。
在一个单独的终端中使用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发布于 2018-11-28 20:59:32
或者,您可以设置环境变量TF_CPP_MIN_LOG_LEVEL=2来筛选出信息和警告消息。我在github问题,他们抱怨相同的输出上发现的。要在python中这样做,可以使用这里中的解决方案。
import os
import tensorflow as tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'你甚至可以随心所欲地打开和关闭它。在运行代码之前,我会测试最大可能的批处理大小,并且可以在执行此操作时禁用警告和错误。
https://stackoverflow.com/questions/50304156
复制相似问题