Es ist ein Memorandum, weil es gestaut ist. Ich habe es noch nicht verschoben. Wenn Sie also Fehler haben, lassen Sie es mich bitte wissen.
In pytorch verhält sich ReflectionPadding2D wie folgt. Weitere Informationen finden Sie in der offiziellen Dokumentation .
>>> 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.]]]])
offizielle Dokumentation zu pytorch https://pytorch.org/docs/stable/nn.html
Wenn Sie versuchen, dies mit Tensorflow zu erreichen, verwenden Sie das Tensorflow-Pad. (Es ist in offizieller Dokumentation geschrieben ...) Ich habe einen Artikel geschrieben, weil ich ihn nicht aus dem Weg räumen konnte.
tf.pad(
tensor,
paddings,
mode='REFLECT',
constant_values=0,
name=None
)
Ein Beispiel ist wie folgt.
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]]
Aus den beiden oben genannten Beispielen offizielles Dokument https://www.tensorflow.org/api_docs/python/tf/pad
Recommended Posts