web-dev-qa-db-fra.com

Comment faire zéro padding dans keras conv layer?

J'essaye de mettre en application le modèle d'un article scientifique, qui dit qu'ils utilisent le remplissage zéro. Est-il possible de configurer ce remplissage dans keras Conv2D ?

Seules les valeurs possibles pour le remplissage que je vois sont

padding: un de "valide" ou "identique" (insensible à la casse).

Est-il possible d'ajouter des zéros ou d'autres valeurs constantes?

7
Dims

"pareil" signifie zéro remplissage. Il n'est actuellement pas possible d'adapter avec d'autres constantes de manière efficace.

9
Jonas Adler

Lorsque vous utilisez padding='valid', il n'y a pas de remplissage.

Lorsque vous utilisez padding='same' avec strides=1, les entrées sont complétées par des zéros, de sorte que la largeur et la hauteur de la sortie soient identiques à celles de l'entrée. Comme décrit dans le document, "same" est légèrement incohérent dans les applications principales avec strides! = 1.

Si vous voulez manuellement définir la valeur de remplissage, le moyen le plus simple consiste peut-être à ajouter un ZeroPadding2D layer avant Conv2D.

Par exemple, ZeroPadding2D(padding=((1,2),(3,4))) ajoutera 1 dimension à gauche, 2 à droite, 3 en haut et 4 en bas. ZeroPadding2D(5) ajoutera 5 dimensions sur les 4 bordures.

(au fait, c’est une couche enveloppante de la fonction backend spatial_2d_padding)

2
Neal

Jetez un coup d'œil à spatial_2d_padding function. Il remplit un tenseur avec des zéros. 

2
Sergii Gryshkevych

Je pense que padding = 'same' signifie que si nous sommes dans un calque caché, les cellules vides que la foulée trouvera seront remplies par les valeurs du calque précédent, et non par des zéros, uniquement si le calque en entrée est rempli de zéros.

0
Omar Villa