【问题标题】:How to understand TensorFlow source code for Imagenet preprocessing如何理解用于 Imagenet 预处理的 TensorFlow 源代码
【发布时间】:2020-04-26 11:58:57
【问题描述】:

想了解和复现tensorflow.keras在函数tf.keras.applications.resnet.preprocess_input中是如何对imagenet做预处理的,但是看不懂source code

@keras_export('keras.applications.imagenet_utils.preprocess_input')
@keras_modules_injection
def preprocess_input(*args, **kwargs):
  return imagenet_utils.preprocess_input(*args, **kwargs)

定义似乎是递归的。此外,文档没有说明该功能。我怎样才能看到这个函数到底在做什么?

【问题讨论】:

  • 过去,我在源代码中看到过,也许你在寻找更旧的 keras 版本。这里似乎有旧版本的文档。尝试找到类似 2.1.0 或 2.2.0(或这些值附近的值):faroit.com/keras-docs/1.0.8/layers/convolutional/#convolution2d。这个想法是每个模型都有自己的预处理,但 VGG 使用每个通道的中心。就是这样,图像输入从 0 到 255:绿色通道的值减去 255/2 左右(但不完全正确)。每个其他频道都遵循相同的流程,但手段不同。
  • 我知道它们确实意味着减法和缩放,但我也想知道它们是如何进行裁剪的。
  • 预处理中没有作物。

标签: python tensorflow keras resnet imagenet


【解决方案1】:

我认为这个链接会有所帮助。 https://github.com/keras-team/keras-applications/blob/master/keras_applications/imagenet_utils.py。该定义实际上不是递归的,因为 import 语句 from keras_applications import imagenet_utils 将允许您使用位于 keras 中的 imagenet_utils 中的 preprocess_input 函数,而不是调用自身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-20
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多