tf.extract_image_patches
的实施在哪里?我检查了找不到它的tensorflow存储库。
文件tensorflow/core/kernels/extract_image_patches_op.cc
不包含实现。
答案 0 :(得分:5)
这是一个有趣的问题。路径如下:
Python tf.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::TensorMap
core/framework/tensor_types.h
。
此时,它已退出tensorflow源码库,因为Eigen
来自第三方eigen library(GitHub mirror)。它的源代码有点non-trivially downloaded and linked到张量流,但是现在我们对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配置中查看。