【发布时间】:2017-10-20 22:17:08
【问题描述】:
tf.extract_image_patches的实现在哪里?我检查了 tensorflow 存储库我找不到它。
文件tensorflow/core/kernels/extract_image_patches_op.cc 不包含实现。
【问题讨论】:
标签: python tensorflow eigen
tf.extract_image_patches的实现在哪里?我检查了 tensorflow 存储库我找不到它。
文件tensorflow/core/kernels/extract_image_patches_op.cc 不包含实现。
【问题讨论】:
标签: python tensorflow eigen
这是一个有趣的问题。路径如下:
Pythontf.extract_image_patches函数在生成的文件tensorflow/python/ops/gen_array_ops.py中实现,调用"ExtractImagePatches"原生操作。
此操作由ExtractImagePatchesOp 在core/kernels/extract_image_patches_op.cc 中为 CPU 和 GPU 设备实现。主要电话是functor::ExtractImagePatchesForward...
... 在core/kernels/extract_image_patches_op.h 中定义。实际逻辑委托给输入张量的::extract_image_patches() 方法。张量的类型为TTypes<T, 4>::ConstTensor,即Eigen::TensorMapcore/framework/tensor_types.h的typedef。
此时,已经脱离了tensorflow源码库,因为Eigen来自第三方eigen library(GitHub mirror)。它的源代码有点non-trivially downloaded and linked to tensorflow,但现在我们对Eigen::TensorMap::extract_image_patches()函数感兴趣。
在eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h文件中定义并应用TensorImagePatchOp...
... 可以在 eigen/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h 中找到。最后,这个函子不会进一步委托它,即实际的实现。
请注意,Eigen 库的特定版本在不同版本的 tensorflow 中可能会有所不同,您应该在 bazel 配置中检查。
【讨论】: