Функция pad
Функция pad дополняет тензор значениями по краям.
Первым параметром функция принимает тензор,
вторым - список пар дополнений для каждой оси.
Третьим параметром можно передать значение,
которым заполняются новые элементы.
Четвертым параметром можно передать режим дополнения:
CONSTANT, REFLECT или SYMMETRIC.
Синтаксис
tf.pad(tensor, paddings, [mode], [constant_values])
Пример
Давайте дополним одномерный тензор нулями по одному элементу с каждой стороны:
<+python+>
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
res = tf.pad(t, [[1, 1]])
print(res)
<-python+>
Результат выполнения кода:
<+python+>
tf.Tensor([0 1 2 3 4 5 0], shape=(7,), dtype=int32)
<-python+>
Пример
Давайте дополним тензор значением 9
вместо нуля:
<+python+>
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
res = tf.pad(t, [[2, 2]], constant_values=9)
print(res)
<-python+>
Результат выполнения кода:
<+python+>
tf.Tensor([9 9 1 2 3 4 5 9 9], shape=(9,), dtype=int32)
<-python+>
Пример
Давайте дополним двумерный тензор по обеим осям:
<+python+>
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]])
res = tf.pad(t, [[1, 1], [2, 2]])
print(res)
<-python+>
Результат выполнения кода:
<+python+>
tf.Tensor(
[[0 0 0 0 0 0 0]
[0 0 1 2 3 0 0]
[0 0 4 5 6 0 0]
[0 0 0 0 0 0 0]], shape=(4, 7), dtype=int32)
<-python+>
Пример
Давайте применим режим REFLECT,
который отражает элементы тензора:
<+python+>
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
res = tf.pad(t, [[2, 2]], mode='REFLECT')
print(res)
<-python+>
Результат выполнения кода:
<+python+>
tf.Tensor([3 2 1 2 3 4 5 4 3], shape=(9,), dtype=int32)
<-python+>