Theano Dimshuffle相当于谷歌的TensorFlow?

Mih*_*kar 7 python numpy theano tensorflow

我已经看到转置和重塑在一起可以帮助但我不知道如何使用.

例如.dimshuffle(0,'x')

通过使用转置和重塑它的等价物是什么?或者,还有更好的方法?谢谢.

mrr*_*rry 11

dimshuffle在TensorFlow中有三个相关的操作来实现Theano的:

  • tf.transpose()用于置换张量的维数.如果参数中指定的模式dimshuffle是输入张量维度的排列(即没有'x'或缺少维度),则可以使用它tf.transpose()来实现dimshuffle().

  • tf.expand_dims()用于将一个或多个size-1维度添加到张量.这将处理'x'指定为dimshuffle()模式的一部分但不重新排序现有维度的情况.

  • tf.squeeze()用于从张量中移除一个或多个尺寸1的尺寸.这样可以处理从dimshuffle()模式中省略尺寸的情况,但不会对现有尺寸重新排序.

假设输入是一个向量,您的example(dimshuffle(0, 'x'))只能用以下表达tf.expand_dims():

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)])
Run Code Online (Sandbox Code Playgroud)

采用更复杂的例子,dimshuffle(1, 'x', 0)应用于矩阵将是:

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)])
Run Code Online (Sandbox Code Playgroud)