2016-05-05 25 views
5

Tüm bölümlerinin tensörler olduğu tensorflow'da bir dönüş matrisi oluşturmak istiyorum.Tensorflow'da Döndürme Matrisi oluşturma

Ben Ne:

def rotate(tf, points, theta): 
    rotation_matrix = [[tf.cos(theta), -tf.sin(theta)], 
         [tf.sin(theta), tf.cos(theta)]] 
    return tf.matmul(points, rotation_matrix) 

Ama bu rotation_matrix yerine tensör kendisinin tensörlerinin bir liste olduğunu söylüyor. theta ayrıca çalışma zamanında geçirilen bir tensör nesnesidir.

cevap

5

Bir Rotasyon Matrisi nasıl oluşturulur, aşağıdakiler birden çok pack (stack) çağrısı gerektirdiğinden daha temizdir:

tf.stack([(tf.cos(angle), -tf.sin(angle)), (tf.sin(angle), tf.cos(angle))], axis=0) 
+0

Bu iyi bir çözüm! –

+0

Bunu düşündüm ama sonra unuttum. Bence bu şu anda yaptığım şeyden daha elverişli. – dtracers

+1

'tf.pack',' tf.stack' olarak yeniden adlandırıldı, bkz. Https://github.com/tensorflow/tensorflow/issues/7550 – Hooked

0

çalışır takımını kullanmaktır ancak daha iyi bir yolu olup olmadığını bir cevap gönderin buldum Bir Seçenek: 'sorusuna cevap vermek için

def rotate(tf, points, theta): 
    rotation_matrix = tf.pack([tf.cos(theta), 
           -tf.sin(theta), 
           tf.sin(theta), 
           tf.cos(theta)]) 
    rotation_matrix = tf.reshape(rotation_matrix, (2,2)) 
    return tf.matmul(points, rotation_matrix) 
1

: İki operasyonlarla

def rotate(tf, points, theta): 
    top = tf.pack([tf.cos(theta), -tf.sin(theta)]) 
    bottom = tf.pack([tf.sin(theta), tf.cos(theta)]) 
    rotation_matrix = tf.pack([top, bottom]) 
    return tf.matmul(points, rotation_matrix)