Wenn Sie die Mathematik Definition von conv2d_transpose
lesen und sehen, was Kronecker product berechnet, werden Sie mit der entsprechenden Größe von stides für conv2d_tranpose
(Breite, Höhe der zweiten Matrix) sehen, dass, es macht das Gleiche.
Darüber hinaus haben Sie Kronecker's Produkt mit conv2d_transpose
out of the box.
Hier ist ein Beispiel für Sie, die die Kronecker-Produkt für Matrizen aus dem Wiki berechnet.
import tensorflow as tf
a = [[1, 2], [3, 4]]
b = [[0, 5], [6, 7]]
i, k, s = len(a), len(b), len(b)
o = s * (i - 1) + k
a_tf = tf.reshape(tf.constant(a, dtype=tf.float32), [1, i, i, 1])
b_tf = tf.reshape(tf.constant(b, dtype=tf.float32), [k, k, 1, 1])
res = tf.squeeze(tf.nn.conv2d_transpose(a_tf, b_tf, (1, o, o, 1), [1, s, s, 1], "VALID"))
with tf.Session() as sess:
print sess.run(res)
Beachten Sie, dass im Falle einer nicht-quadratische Matrix, müssen Sie mehr Dimensionen in den Zeilen calulcate: sie
i, k, s = len(a), len(b), len(b)
o = s * (i - 1) + k
und ordnungsgemäß verwenden, wie Ihre Fortschritte/Ausgänge Argumente.