在 keras 中使用 EfficientNet 时出现 ResourceExhaustedError

Posted

技术标签:

【中文标题】在 keras 中使用 EfficientNet 时出现 ResourceExhaustedError【英文标题】:ResourceExhaustedError while using EfficientNet in keras 【发布时间】:2020-06-12 20:38:27 【问题描述】:

我正在使用谷歌 colab。使用 EfficientNetB3 时出现以下错误Resource exhausted: OOM when allocating tensor with shape[15,95,95,192] and type float

我理解这一点,因为我的数据不适合 GPU。但是当我尝试InceptionResNetV2 时,我没有收到任何错误。

EfficientNetB3 中可训练参数的数量为22,220,824InceptionResNetV2 中可训练的参数个数是109,380,744

InceptionResNetV2 中可训练参数的数量是5 时间超过EfficientNetB3。所以我期待InceptionResNetV2抛出错误而不是EfficientNetB3

知道为什么我在EfficientNetB3 中收到资源错误吗?

注意:我正在使用两个并行网络,这些参数是两个网络参数的总和。

【问题讨论】:

我在使用 tf.keras.applications 时看到了同样的情况,其中 EfficientNetB3(48MB,12M 参数)使用几乎与 Xception 完全相同的内存(88MB,23M 参数)。 EfficientNetB4 给了我 OOM 错误,即使它也应该是一个比 Xception 更少参数的更小模型 【参考方案1】:

所有论文似乎都在使用 TPU 来运行高效网络。我有一种感觉,还有其他东西使它使用了更多的内存。我同意这不直观,因为高效网络中的训练参数较少。但是,您似乎确实需要实际使用 TPU 来执行此操作。所以基本上这需要使用一些云服务来让你访问 TPU 等......

【讨论】:

以上是关于在 keras 中使用 EfficientNet 时出现 ResourceExhaustedError的主要内容,如果未能解决你的问题,请参考以下文章

以下 Pyhthon CNN 架构库:EfficientNet & DenseNet 169 EfficientNet 导入问题

EfficientNet代码解读笔记

EfficientNet

Pytorch CIFAR10图像分类 EfficientNet v1篇

Pytorch CIFAR10图像分类 EfficientNet v1篇

Pytorch CIFAR10图像分类 EfficientNet v1篇