2017-03-21 3 views
4

Pourquoi Tensorflow a-t-elle choisi de préférer le rembourrage en bas à droite? Avec le remplissage 'SAME', pour moi, il serait logique de démarrer l'ancre centrale du noyau au premier pixel réel. En raison de l'utilisation d'un rembourrage asymétrique, il en résulte une divergence avec d'autres cadres. Je comprends que le rembourrage asymétrique est en principe bon car sinon il resterait une rangée/colonne de rembourrage inutilisée. Si Tensorflow aurait donné préséance au remplissage à gauche et en haut, il ferait des convolutions et pèserait de la même manière que les frameworks Caffe/cudnn/$, et la conversion de poids serait compatible indépendamment du padding.Hypothèses de rembourrage asymétrique de Tensorflow

TF gives bottom- and right- padding precedence

+0

Cela ne répond pas à votre question, mais ce n'est pas le seul cas où les cadres diffèrent dans le rembourrage (et les incompatibilités ne s'appliquent pas seulement entre TF et d'autres frameworks) – etarion

+0

Etarion: intéressant! Élaborer? – TimZaman

+0

Un exemple que je sais est que Metal Performance shaders Caffe et Apple se comportent différemment lorsque vous appliquez 3x3 pooling avec la foulée 2 sur une carte de caractéristiques avec des tailles égales et pas de rembourrage (au moins vous dites que vous ne voulez pas de rembourrage) un pixel implicite de remplissage sur le côté droit/inférieur et produit une carte de caractéristiques qui est un pixel plus grand que celui produit par MPS. – etarion

Répondre

2

Ceci est pour des raisons de compatibilité avec les cadres historiques précédents (non publics). Il est regrettable que les définitions ne soient pas plus claires, car il s'agit d'une pierre d'achoppement commune lors du portage entre différentes bibliothèques.

+0

Merci Pete. Logique. – TimZaman