Тензор потока: получить тот же тензор после серии свертки и деконволюции - PullRequest
1 голос
/ 03 апреля 2019

Мне интересно, возможно ли в итоге получить тот же тензор после распространения его через сверточный, а затем деконволюционный фильтр.Например:

random_image = np.random.rand(1, 6, 6, 3)
input_image = tf.placeholder(shape=[1, 6, 6, 3], dtype=tf.float32)
conv = tf.layers.conv2d(input_image, filters=6, kernel_size=[3, 3], strides=(1, 1), data_format="channels_last")
deconv = tf.layers.conv2d_transpose(conv, filters=3, kernel_size=[3, 3], strides=(1, 1), data_format="channels_last")
sess = tf.Session()
sess.run(tf.global_variables_initializer())
print(random_image)
# Get an output which will be same as:
print(sess.run(deconv, feed_dict={input_image: random_image}))

Другими словами, если сгенерированный вектор random_image, например: [1,2,3,4,5], после свертки и деконволюции вектор deconv будет [1,2,3,4,5].

Однако я не могу заставить его работать.

С нетерпением жду ваших ответов!

1 Ответ

1 голос
/ 03 апреля 2019

Можно получить некоторую степень визуального сходства, например, с помощью инициализации VarianceScaling.Или даже с полностью пользовательским инициализатором.Но транспонированная свертка не является математически деконволюцией.Таким образом, вы не можете получить математическое равенство с conv2d_transpose.

Посмотрите Почему этот Conv2d_Transpose / deconv2d не возвращает исходный ввод в tenorflow?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...