问题标签 [efficientnet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
336 浏览

python - 类型错误:('关键字参数不理解:','输入')在 Keras

我正在尝试实现efficientnetB0 来创建图像分类器。我现在开始只为二进制分类创建模型。在 ubuntu 18.4 上使用 Keras==2.4.3、tensorflow==2.3.1 和 Python 3.6

高效网络 B0 的代码 -

我得到的错误 -

引用此链接来编写代码

0 投票
0 回答
330 浏览

python - Keras Efficientnet B0 使用 0 到 255 之间的输入值

我正在使用来自 keras 应用程序的 EfficientNet B0。

Keras 将输入归一化为 (0,1)。我在 keras 代码中找到了以下行:

现在我不想重新调整输入。作为输入,我想使用原始图像,因为我使用的是珊瑚 edgetpu 板。该板仅适用于 int8。我只想删除上面的行。我可以在我的项目中从 keras 复制代码。但是当我使用不同版本的 Tensorflow 时,它就不再起作用了。有人有想法吗?

我正在使用 TensorFlow 2.4

0 投票
0 回答
41 浏览

python - 混合数据的有效网络不兼容大小

我有一些混合模型的代码,一个在高效网络上训练,其余的在我组合的一些外部数据上训练。以下是该模型的示例:

但是,当我通过 fit_generator 函数运行它时,我收到以下错误:

我不确定这个错误来自哪里,无论是在数据加载器中还是在高效网络中。有任何想法吗?

编辑以包含数据加载器:

当我只使用图像和高效网络时,我似乎遇到了同样的问题。似乎使用 Keras 内置的图像数据加载器功能是我可以让它工作的唯一方法(仅使用图像)。

0 投票
1 回答
96 浏览

conv-neural-network - 参数个数:倒置残差块对图像分类任务的劣势

我有一个关于 MobileNet 和 EfficientNet 倒置残差块的更一般的问题。我有一个复杂度较低的图像数据集的分类任务。因此我选择了一个参数很少的架构(EfficientNet B0)。但就验证损失而言,我遇到了过度拟合。浅层 ResNet、ResNext 等效果更好。这些架构使用常规残差块,因此具有更多参数。那么这里的参数数量和模型复杂度之间似乎没有关系?有人可以解释一下我在这里缺少什么吗?

0 投票
0 回答
382 浏览

python - Keras Transfer-Learning 设置 layers.trainable 为 True 没有效果

我想使用 tf.keras(tensorflow 2.3)微调效率网络,但我无法正确更改层的训练状态。我的模型如下所示:

这样做是为了让我在自定义顶部的随机权重不会尽快破坏权重。

到目前为止,一切似乎都有效。我训练我的模型 2 个 epoch,然后我想开始微调效率网络基础。因此我打电话

我重新编译并再次打印摘要,以查看不可训练权重的数量保持不变。拟合也不会带来比保持冷冻更好的效果。

Ps:我也试过efficientnet3.trainable = True了,但也没有效果。

难道这与我同时使用顺序模型和函数模型有关吗?

0 投票
0 回答
49 浏览

tensorflow - 在 GPU 上运行 EfficientnetB0/Efficinet-lite0 模型获得非确定性结果(使用 tensorflow-gpu 2.2)

设置了以下随机种子

设置了以下环境变量TRUE

问题的根源可能是什么?

0 投票
0 回答
237 浏览

tensorflow - TensorFlow.Keras 的 EfficientNet 和 MobileNetV2 模型无法在 GPU 上重现

从tensorflow.keras.applications.efficientnet下载EfficientNet模型并根据我们自己的数据重新训练后,我注意到结果不可重现。结果对于VGG16ResNet101InceptionV3InceptionResNetV2等其他架构是可重现的,但对于任何EfficientNetBx模型都不能重现。

逐层分析表明,该DepthwiseConv2D层正在产生不同的梯度。我还尝试了具有相同类型层的MobileNetV2,它也无法重现。我想知道是否有其他人遇到过这个问题以及他们是如何解决的。

请注意,我已经设置了以下所有种子,甚至还有 tensorflow-determinism:

TensorFlow 版本:tensorflow-gpu==2.3

在 TensorFlow GitHub 上打开了这个问题: https ://github.com/tensorflow/tensorflow/issues/47174

0 投票
1 回答
59 浏览

python - EfficientnetB1 :ValueError: 您正在尝试将包含 185 层的权重文件加载到具有 184 层的模型中

我在使用时遇到错误

在我将预训练权重 model.ckpt 转换为efficientnetb1_notop.h5

请帮忙

0 投票
0 回答
110 浏览

keras - 为什么在看似随机的 Epoch 上训练 EfficientNet CNN 时会出现 Invalid Argument 异常?

我正在尝试训练不同的 EfficientNet 模型来对音乐流派进行分类。首先,我将我拥有的音频转换为 Mel-Spectrograms 并用它们训练一个模型。这是一个多标签分类,我使用 sigmoid 层作为最后的预测层,使用二元交叉熵作为损失函数。我使用了不同的指标,例如二进制准确性和召回率,但主要是二进制准确性。我使用迁移学习首先将现有的 EfficientNetB1(或 EfficientNetB3)模型迁移到我的新数据集上,该数据集由大约 67k 图片(频谱图)和 16 个流派/类组成,标签由 1 到 4 个类(one-hot -编码)。之后模型被保存并再次加载以进行微调,大多数层都未冻结(除了 BatchNormalization 层)。迁移模型的学习率为 0.01,微调为 0.001。

因此,在转移模型后,在进行微调时,训练最终(虽然不是在所有运行中)由于以下异常而停止(我还包括整个训练日志):

这个异常似乎是随机抛出的,因为有时训练效果很好,有时却不行,这就是为什么这对我来说是一个大问题。我现在处理这个问题已经超过 1 周了,似乎找不到解决方案。我尝试更改批量大小,我通常使用 8,因为在我使用的大多数 GPU 上,内存不足以容纳一批中的更多图片。我试图不使用类 wights,但模型有时仍然会失败。我试图省略某些指标,只使用准确性,但训练在某些时候仍然失败。

非常感谢任何帮助或指导。有关更多信息,请告诉我,这是我关于堆栈溢出的第二个问题,我对此很陌生。

我注意到,我还可以包含我的模型创建和训练的代码,所以首先是模型创建(build_efficientNetB3_model):

现在训练(文件是评估.py和train.py):

评估.py

火车.py

0 投票
1 回答
398 浏览

python - 为什么训练损失会上下波动?

我正在使用 TF2 研究对象检测 API 和来自 TF2 模型动物园的预训练 EfficientDet D3 模型。在对我自己的数据集进行训练期间,我注意到总损失在上下跳跃 - 例如,几步之后从 0.5 到 2.0,然后又回到 0.75:

张量板

所以总而言之,这个训练似乎不是很稳定。我认为问题可能出在学习率上,但正如您在上面的图表中看到的,我在训练期间将 LR 设置为衰减,它下降到 1e-15 的非常小的值,所以我不知道如何这可能是问题所在(至少在培训的第二部分)。

Tensorboard 平滑

此外,当我在 Tensorboard 中平滑曲线时,如上图第二张所示,可以看到总损失在下降,因此方向是正确的,即使它仍然处于相当高的值。我会对为什么我的训练集不能取得更好的结果感兴趣,但我想这是另一个问题。首先,我真的很感兴趣,为什么在整个训练过程中总损失会如此上下波动。有任何想法吗?

PS:pipeline.config我的培训文件可以在这里找到