问题标签 [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 投票
0 回答
727 浏览

python - EfficientNet 增加训练和验证损失,在 100 个 epoch 后降低准确性

我一直在我自己的图像数据集上运行来自 Google 的EfficientNet代码,并遇到了以下问题。对于架构的每个变体(b0 到 b7),训练和验证损失会减少,直到 +/- 100 个时期。之后两者都开始迅速增加,而验证准确性则相反。

我以前在任何地方都没有见过这种模式。我怀疑这是因为过度拟合,但训练损失不会继续减少吗?

看看其他 SO 问题,这个问题接近我的意思,但我不确定。如果这是一个梯度消失的问题,那么为什么 Google 的人没有使用 ImageNet 数据体验过呢?

设置

这已使用 EfficientNet教程运行。我的数据集包含 41k 个用于训练的图像和 5k 个用于验证的图像。

0 投票
3 回答
4470 浏览

python - 如何修复“元组”对象没有“层”属性?

我正在使用来自efficientnet 的层对该层进行一些后处理,但在提取层并对其执行操作后,它显示:

AttributeError: 'tuple' 对象没有属性 'layer' 。

继续运行。python 3.6.2_ 尝试使用像 ResNet 这样的 keras 模型,并且工作正常。tensorflow 2.0keras 2.2.4

ASPP(atrous spatial pyramid pooling)是在得到层后对x进行各种层操作的类。

0 投票
0 回答
762 浏览

apache-spark - 在 Spark 上部署 Keras 模型

我有一个训练有素的 keras 模型。

https://github.com/qubvel/efficientnet

我有一个大型更新数据集,我想对其进行预测。意思是每 2 小时左右运行一次我的 spark 工作。

实现这一点的方法是什么?MlLib 不支持高效网络。

在网上搜索时,我看到这种使用 sparkdl 的实现,但它不支持 efficentNet 作为 modelName 参数。

我天真的方法是

并创建一个调用 model.predict 的 UDF...

我看到的另一种方法是

解决此问题的正确(和有效)方法是什么?

0 投票
1 回答
145 浏览

neural-network - 迁移学习后如何使用原始输出层并获得两个模型的预测?

我使用 EfficientNet 训练了一个新网络进行对象检测,而不是使用 EfficientNet 的原始输出层,我将其更改为 5 个输出密集(原始层的 5 个标签)。在训练过程中,我锁定了所有层,只训练我的自定义输出层 我设法在我的自定义输出层标签中取得了更好的结果(在 EfficientNet 中他们达到了 84% 我设法获得了平均 92% 的准确度)我会喜欢得到原来的 1000 个标签,也是我自己的 5 个输出层

TLDR

我想要实现的是:

假设我有 2 个神经网络:A,B 它们都包含 N-1 个相同的层 和不同的输出层

  • A(输出层)dim 为 5
  • B(输出层)dim 为 1000

因为它们在输出层之前都是相同的,所以它们在输出层之前都将具有相同的输出

我想运行模型 B,然后获取 dropout 层的输出,针对模型 A 输出层运行此输出,而不是再次运行两个模型,这可能还是我面临XY 问题 ?创建具有 2 个输出层的神经网络的正确方法是什么?

我说明了问题:

在此处输入图像描述

0 投票
1 回答
1443 浏览

python - 迁移学习 - 尝试在 RTX 2070 上重新训练efficientnet-B07 内存不足

64gb ram CPU 这是我在尝试迷恋时尝试运行的训练代码RTX 2070

2019-11-17 08:52:52.903583: 我在 tensorflow/stream_executor/dso_loader.cc:152] 本地成功打开了 CUDA 库 libcublas.so.10.0 .... ... 2019-11-17 08:53:24.713020: I tensorflow/core/common_runtime/bfc_allocator.cc:641] 110 个大小为 27724800 的块,总计 2.84GiB 2019-11-17 08:53:24.713024:I tensorflow/core/common_runtime/bfc_allocator.cc:641] 6 个大小为 38814720 的块总计 222.10MiB 2019-11-17 08:53:24.713027: I tensorflow/core/common_runtime/bfc_allocator.cc:641] 23 个大小为 54000128 的块总计 1.16GiB 2019-11-17 08:53:24.713031: I tensorflow/core /common_runtime/bfc_allocator.cc:641] 1 个大小为 73760000 的块,总计 70.34MiB 2019-11-17 08:53:24.713034:I tensorflow/core/common_runtime/bfc_allocator.cc:645] 使用中块的总和:5.45 GiB 2019-11-17 08:53:24.713040:I tensorflow/core/common_runtime/bfc_allocator.cc:647] 统计:限制:5856749158 InUse:5848048896 MaxInUse:5848061440 NumAllocs:6140 MaxAllocSize:3259170816

2019-11-17 08:53:24.713214: W tensorflow/core/common_runtime/bfc_allocator.cc:271] ************************** ****************************************************** ************************ 2019-11-17 08:53:24.713232: W tensorflow/core/framework/op_kernel.cc:1401] OP_REQUIRES 失败在 cwise_ops_common.cc:70 :资源耗尽:OOM 分配具有形状 [5,1344,38,38] 的张量并通过分配器 GPU_0_bfc 在 /job:localhost/replica:0/task:0/device:GPU:0 上键入 float Traceback(最近一次通话最后一次):文件“/home/naort/Desktop/deep-learning-data-preparation-tools/EfficientNet-Transfer-Learning-Boiler-Plate/model_retrain.py”,第 76 行,在 nb_worker=24 中)文件“/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py”,第 91 行,在包装器中返回 func(*args, **kwargs) 文件“/usr/local/lib/蟒蛇3。6/dist-packages/keras/engine/training.py”,第 1732 行,在 fit_generator initial_epoch=initial_epoch)文件“/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py”,第 220 行,在 fit_generator reset_metrics=False) 文件“/usr/local/lib/python3.6/dist-packages/keras/engine/training.py”,第 1514 行,在 train_on_batch 输出 = self.train_function(ins) 文件中“ /home/naort/.local/lib/python3.6/site-packages/tensorflow/python/keras/backend.py”,第 3076 行,在调用 run_metadata=self.run_metadata)文件“/home/naort/.local/ lib/python3.6/site-packages/tensorflow/python/client/session.py”,第 1439 行,在调用 run_metadata_ptr)文件“/home/naort/.local/lib/python3.6/site-packages/tensorflow/ python/framework/errors_impl.py",第 528 行,退出 c_api.TF_GetCode(self.status.状态)) tensorflow.python.framework.errors_impl.ResourceExhaustedError:OOM 分配具有形状[5,1344,38,38] 的张量并在 /job:localhost/replica:0/task:0/device:GPU:0 上键入 float通过分配器 GPU_0_bfc [[{{node training/Adam/gradients/AddN_387-0-TransposeNHWCToNCHW-LayoutOptimizer}}]] 提示:如果您想在 OOM 发生时查看已分配张量的列表,请将 report_tensor_allocations_upon_oom 添加到 RunOptions 以获取当前分配信息。将 report_tensor_allocations_upon_oom 添加到 RunOptions 以获取当前分配信息。将 report_tensor_allocations_upon_oom 添加到 RunOptions 以获取当前分配信息。

[[{{node Mean}}]] 提示:如果您想在 OOM 发生时查看已分配张量的列表,请将 report_tensor_allocations_upon_oom 添加到 RunOptions 以获取当前分配信息。

0 投票
1 回答
81 浏览

tensorflow - 为什么 Gramian 矩阵适用于 VGG16,但不适用于 EfficientNet 或 MobileNet?

A Neural Algorithm of Artistic Style使用在ImageNet 上训练的 VGG16 分类网络的中间特征向量的Gramian 矩阵。那时,这可能是一个不错的选择,因为 VGG16 是表现最好的分类之一。如今,有更高效的分类网络在分类性能上超过 VGG,同时需要更少的参数和 FLOPS,例如 EfficientNet 和 MobileNetv2。

但是当我在实践中尝试这一点时,VGG16 特征的 Gramian 矩阵似乎代表了图像风格,因为它的风格相似图像的 L2 距离小于风格不相关图像的 L2 距离。对于根据 EfficientNet 和 MobileNetv2 特征计算的 Gramian 矩阵,情况似乎并非如此。非常相似的图像之间和非常不同的图像之间的 L2 距离仅变化约 5%。

从网络结构来看,VGG、EfficientNet、MobileNet都有卷积,中间有batch normalization和ReLU,所以构建块是一样的。那么哪种设计决策是 VGG 独有的,以便其 Gramian 矩阵捕捉风格,而 EfficientNet 和 MobileNet 却没有?

0 投票
1 回答
416 浏览

keras - 为什么 EfficientNet B0 的输出是二维的?

我从论文中知道:efficientnet b0 的输出是 (*,7,7,1280),对吗?如果是这样,那么 globalAveragePooling2D 将得到 ndim = 4,而不是 2。

0 投票
1 回答
531 浏览

python-3.x - 以下 Pyhthon CNN 架构库:EfficientNet & DenseNet 169 EfficientNet 导入问题

我正在尝试使用以下深度学习 CNN 架构:DenseNet169 & EfficientNet with transfer learning。我已经安装了以下库 bu PyCharm 并调用了以下导入库:

我称之为以下架构:

下载预训练模型和权重

但我总是收到以下错误消息:

对于 DenseNet169:mask = node.output_masks[tensor_index] AttributeError: 'Node' object has no attribute 'output_masks'

对于来自 keras.applications 的 EfficientNetB5 导入 EfficientNetB5 文件“C:\Users\QTR7701\AppData\Local\Programs\Python\Python37\lib\site-packages\efficientnet\initializers.py”,第 44 行,调用 return tf.random_normal( AttributeError:模块“tensorflow”没有属性“random_normal”

如果有人可以帮助我。

0 投票
1 回答
325 浏览

tensorflow - 图像分类迁移学习需要负样本吗?

任务是确定图像属于 3 个类别中的哪一个,或者不属于哪一个。

我收到了一个现成的模型。具有 ImageNet 权重的 EfficientNet B4 已应用迁移学习来识别 4 个类别:3 个目标类别和第 4 个“无”类别。后者接受了不包含任何目标对象的随机图像示例的训练。

问题是它是否是正确的方法——是否需要第四节课?

我的直觉是 net 应该只在 3 个目标类上进行训练。如果输出概率保持在某个阈值以下(90%?),则应将图像视为不包含任何目标对象。我对吗?

0 投票
2 回答
1085 浏览

tensorflow - Tensorflow 2 /Google Colab / EfficientNet Training - AttributeError: 'Node' object has no attribute 'output_masks'

我正在尝试在 Google Colab 上训练 EfficientNetB1,并不断遇到来自 Keras 或 Tensorflow.Keras 的正确导入语句的不同问题,目前这就是我的导入的样子

这就是我的模型的样子

但是对于我的一生,我无法弄清楚为什么我会收到以下错误