首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用4 VGG16微调Keras模型

无法使用4 VGG16微调Keras模型
EN

Stack Overflow用户
提问于 2018-02-21 12:21:56
回答 1查看 167关注 0票数 1

我用4个VGG16 (不包括顶部)构建一个模型,然后将4个VGG16的4个输出连接起来形成一个密集层,紧接着是softmax层,所以我的模型有4个输入(4个图像)和1个输出(4个类)。

我首先通过训练密集层并冻结VGG16中的层来进行迁移学习,这很好用。

但是,在通过设置layer.trainable = True解冻VGG16层之后,我得到了以下错误:

tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2018 23:12:28.501894: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties: name: GeForce GTX TITAN X major: 5 minor: 2 memoryClockRate(GHz): 1.076 pciBusID: 0000:0a:00.0 totalMemory: 11.93GiB freeMemory: 11.71GiB 2018 23:12:28.744990: I tensorflow/stream_executor/cuda/cuda_dnn.cc:444] could not convert BatchDescriptor {count: 0 feature_map_count: 512 spatial: 14 14 value_min: 0.000000 value_max: 0.000000 layout: BatchDepthYX} to cudnn tensor descriptor: CUDNN_STATUS_BAD_PARAM

然后,我遵循this page中的解决方案并设置os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'。上面的第一个错误已经消失了,但我仍然得到第二个错误:

keras tensorflow/stream_executor/cuda/cuda_dnn.cc:444 could not convert BatchDescriptor to cudnn tensor descriptor: CUDNN_STATUS_BAD_PARAM

如果我再次冻结VGG16层,那么代码就可以正常工作。在其他作品中,这些错误只有在我将VGG16层设置为可训练时才会发生。

我还构建了一个只有1个VGG16的模型,而且这个模型也工作得很好。

因此,总而言之,只有当我解冻具有4个VGG16的模型中的VGG16层时,我才会得到这些错误。

有什么办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-02-21 23:48:25

事实证明,它与模型中的VGG16数量无关。这个问题是由于批量大小造成的。

当我说具有1个VGG16的模型有效时,该模型使用批处理大小8。当我将批处理大小减小到小于4(1、2或3)时,同样的错误也会发生。

现在我只对4个VGG16的模型使用批处理大小4,它工作得很好,尽管我仍然不知道当批处理大小<4时它失败的原因(可能与我使用4个GPU的事实有关)。

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

https://stackoverflow.com/questions/48898124

复制
相关文章

相似问题

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