使用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 回答
尝试将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')
或者,您可以设置环境变量
TF_CPP_MIN_LOG_LEVEL=2
以过滤掉信息和警告消息 . 我发现this github issue where they complain about the same output . 要在python中执行此操作,您可以使用here中的解决方案:您甚至可以随意打开和关闭它 . 我在运行代码之前测试了最大可能的批量大小,并且我可以在执行此操作时禁用警告和错误 .