weights = tf.placeholder("float",[5,5,1,1])
imagein = tf.placeholder("float",[1,32,32,1])
conv = tf.nn.conv2d(imagein,weights,strides=[1,1,1,1],padding="SAME")
deconv = tf.nn.conv2d_transpose(conv, weights, [1,32,32,1], [1,1,1,1],padding="SAME")
dw = np.random.rand(5,5,1,1)
noise = np.random.rand(1,32,32,1)
sess = tf.InteractiveSession()
convolved = conv.eval(feed_dict={imagein: noise, weights: dw})
deconvolved = deconv.eval(feed_dict={imagein: noise, weights: dw})
Я пытался вычислить conv2d_transpose, чтобы обратить свертку в Tensorflow. Я понимаю, что «deconvolved» должен содержать те же данные, что и «шум» после применения обычной свертки, а затем его транспонирование, но «deconvolved» просто содержит совершенно другое изображение. Что-то не так с моим кодом, или теория неверна?Почему этот Conv2d_Transpose/deconv2d не возвращает исходный вход в тензорном потоке?