C'est un mémorandum parce qu'il est bloqué. Je ne l'ai pas encore proposé, donc si vous avez des erreurs, faites-le moi savoir.
Dans pytorch, ReflectionPadding2D se comporte comme suit. Vous pouvez en savoir plus dans la documentation officielle .
>>> m = nn.ReflectionPad2d(2)
>>> input = torch.arange(9, dtype=torch.float).reshape(1, 1, 3, 3)
>>> input
tensor([[[[0., 1., 2.],
[3., 4., 5.],
[6., 7., 8.]]]])
>>> m(input)
tensor([[[[8., 7., 6., 7., 8., 7., 6.],
[5., 4., 3., 4., 5., 4., 3.],
[2., 1., 0., 1., 2., 1., 0.],
[5., 4., 3., 4., 5., 4., 3.],
[8., 7., 6., 7., 8., 7., 6.],
[5., 4., 3., 4., 5., 4., 3.],
[2., 1., 0., 1., 2., 1., 0.]]]])
>>> # using different paddings for different sides
>>> m = nn.ReflectionPad2d((1, 1, 2, 0))
>>> m(input)
tensor([[[[7., 6., 7., 8., 7.],
[4., 3., 4., 5., 4.],
[1., 0., 1., 2., 1.],
[4., 3., 4., 5., 4.],
[7., 6., 7., 8., 7.]]]])
Documentation officielle de pytorch https://pytorch.org/docs/stable/nn.html
Si vous essayez d'y parvenir avec tensorflow, vous utiliserez le pad tensorflow. (Il est écrit dans la documentation officielle ...) J'ai écrit un article parce que je ne pouvais pas le sortir de mon propre chemin.
tf.pad(
tensor,
paddings,
mode='REFLECT',
constant_values=0,
name=None
)
Un exemple est le suivant.
t = tf.constant([[1, 2, 3], [4, 5, 6]])
paddings = tf.constant([[1, 1,], [2, 2]])
tf.pad(t, paddings, "REFLECT")
# [[6, 5, 4, 5, 6, 5, 4],
# [3, 2, 1, 2, 3, 2, 1],
# [6, 5, 4, 5, 6, 5, 4],
# [3, 2, 1, 2, 3, 2, 1]]
D'après les deux exemples de document officiel ci-dessus https://www.tensorflow.org/api_docs/python/tf/pad
Recommended Posts