在哪里执行tf.extract_image_patches
?我检查了我找不到的tensorflow存储库。
该文件tensorflow/core/kernels/extract_image_patches_op.cc
不包含实现。
这是一个有趣的问题。路径如下:
Python tf.extract_image_patches
函数在生成的文件中实现,该文件tensorflow/python/ops/gen_array_ops.py
调用"ExtractImagePatches"
本机op。
该操作由ExtractImagePatchesOp
in core/kernels/extract_image_patches_op.cc
为CPU和GPU设备实现。主要电话是functor::ExtractImagePatchesForward
...
...在中定义core/kernels/extract_image_patches_op.h
。实际的逻辑委托给::extract_image_patches()
输入张量的方法。张量的类型为TTypes
,这是的typedef Eigen::TensorMap
core/framework/tensor_types.h
。
此时,它已经脱离了tensorflow源库,因为Eigen
它来自第三方特征库(GitHub镜像)。它的源代码在某种程度上是很简单的下载并链接到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配置中进行检查。