gpt4 book ai didi

tensorflow - efficientnet.tfkeras 与 tf.keras.applications.efficientnet

转载 作者:行者123 更新时间:2023-12-02 16:28:01 27 4
gpt4 key购买 nike

我正在尝试使用 efficientnet 来自定义训练我的数据集。

而且我发现与所有其他代码/数据/配置相同。efficientnet.tfkeras.EfficientNetB0 可以提供约 90% 的训练/预测准确率,而 tf.keras.applications.efficientnet.EfficientNetB0 只能提供约 70% 的准确率。

但我想两者应该是高效网络的相同实现,或者我在这里遗漏了什么?

我正在使用最新的 efficientnet和 TensorFlow 2.3.0

with strategy.scope():
model = tf.keras.Sequential([
efficientnet.tfkeras.EfficientNetB0( #tf.keras.applications.efficientnet.EfficientNetB0
input_shape=(IMAGE_SIZE, IMAGE_SIZE, 3),
weights='imagenet',
include_top=False
),
L.GlobalAveragePooling2D(),
L.Dense(1, activation='sigmoid')
])

model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['binary_crossentropy']
)
model.summary()

最佳答案

我确实遇到了 EfficientNetB4 的相同问题,并且确实遇到了以下情况:

  1. 参数总数不相等。可训练参数相等,但不可训练参数不同。 efficientnet.tfkeras 的不可训练参数比 tf.keras.applications 模型少 7 个。

  2. 层数不相等,efficientnet.tfkeras的层数比tf.keras.application模型少。

  3. 不同的层位于最开始,最值得注意的是归一化和重新缩放层,它们在 tf.keras.applications 模型中,但不在 efficientnet.tfkeras 模型中。您可以使用 model.summary() 方法自行观察。

  4. 在应用此层时,通过使用 model.layers[i](array),事实证明这些层通过将图像除以 255 并根据以下条件应用归一化来重新缩放图像:

(输入图像 - IMAGENET_MEAN)/square_root(IMAGENET_STD)

因此,事实证明图像归一化已构建到模型中。当您自己对输入图像执行此归一化时,图像将被归一化两次,从而导致像素值极小。因此,该模型将很难学习。

TLDR:不要规范化输入图像,因为它内置于 tf.keras.application 模型中,输入图像的值应在 0-255 范围内。

关于tensorflow - efficientnet.tfkeras 与 tf.keras.applications.efficientnet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64030221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com