Où est la mise en œuvre de tf.extract_image_patches
? J'ai vérifié le référentiel tensorflow je ne pouvais pas le trouver. Le fichier tensorflow/core/kernels/extract_image_patches_op.cc
ne contient pas d'implémentation.Implémentation de tf.extract_image_patches
Répondre
C'est une question intéressante. Le chemin est la suivante:
fonction Python
tf.extract_image_patches
est implémenté dans le fichier générétensorflow/python/ops/gen_array_ops.py
, qui invoque"ExtractImagePatches"
op natif. Cette opération est implémentée parExtractImagePatchesOp
danscore/kernels/extract_image_patches_op.cc
pour les unités CPU et GPU. L'appel principal estfunctor::ExtractImagePatchesForward
...... qui est défini dans
core/kernels/extract_image_patches_op.h
. La logique réelle est déléguée à la méthode::extract_image_patches()
du tenseur d'entrée. Le type du tenseur estTTypes<T, 4>::ConstTensor
, qui est un typedef deEigen::TensorMap
core/framework/tensor_types.h
.
À ce stade, il devient de tensorflow base source, car Eigen
est du tiers eigen library (GitHub mirror). Son code source est quelque peu non-trivially downloaded and linked à tensorflow, mais en ce moment nous sommes intéressés par la fonction Eigen::TensorMap::extract_image_patches()
.
Il est défini dans le fichier
eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h
et appliqueTensorImagePatchOp
...... qui se trouve dans
eigen/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h
. Finalement, ce foncteur ne le délègue plus, c'est-à-dire l'implémentation réelle.
Notez que la version particulière de Eigen
bibliothèque peut être différente dans différents construit de tensorflow, que vous devriez vérifier dans la configuration de Bazel.