Istnieją trzy istotne ops wykonawcze Theano na dimshuffle
w TensorFlow:
tf.transpose()
służy do permutacji wymiarów tensora. Jeśli wzorzec określony w argumentach dla dimshuffle
jest permutacją wymiarów tensora wejściowego (tj. Nie ma 'x'
lub brakującego wymiaru), można użyć tf.transpose()
do wdrożenia dimshuffle()
.
tf.expand_dims()
służy do dodania jednego lub więcej wymiarów rozmiaru 1 do tensora. Obsługuje to przypadek, w którym 'x'
jest określony jako część wzorca dimshuffle()
, ale nie zmienia kolejności istniejących wymiarów.
tf.squeeze()
służy do usunięcia jednego lub więcej wymiarów rozmiaru 1 z tensora. Obsługuje to przypadek, w którym wymiar jest pomijany ze wzoru dimshuffle()
, ale nie zmienia kolejności istniejących wymiarów.
Zakładając, że sygnał wejściowy jest wektorem, swoją przykład (dimshuffle(0, 'x')
) może być wyrażony za pomocą tf.expand_dims()
wyłącznie:
input = tf.placeholder(tf.float32, [None]) # Defines an arbitrary-sized vector.
result = tf.expand_dims(input, 1)
print result.get_shape() # ==> TensorShape([Dimension(None), Dimension(1)])
Biorąc bardziej skomplikowanego przykładu, dimshuffle(1, 'x', 0)
stosowane do matrycy będzie:
input = tf.placeholder(tf.float32, [128, 32]) # Defines a matrix.
output = tf.expand_dims(tf.transpose(input, [1, 0]), 1)
print output.get_shape()
# ==> TensorShape([Dimension(32), Dimension(1), Dimension(128)])