TF में MatrixMultiplication करने की कोशिश कर रहा है

import tensorflow as tf
a1 = tf.constant(tf.random.normal(shape=(5,4,64)))
tf.matmul(a1,a1,transpose_b=True)

यह पूरी तरह से ठीक काम करता है, लेकिन अगर मैं transpose इनपुट a1 मैन्युअल रूप से निम्नलिखित को पसंद करता हूं, तो मुझे एक त्रुटि मिलती है:

tf.matmul(a1,tf.transpose(a1))

त्रुटि:

InvalidArgumentError: In[0] and In[1] must have compatible batch dimensions: [5,4,64] vs. [64,4,5] [Op:BatchMatMulV2]

दस्तावेज़ीकरण:

transpose_b: If True, b is transposed before multiplication.

तो मुझे अंतर समझ में नहीं आता, कोई सुझाव सहायक होगा।

1
data_person 30 अप्रैल 2021, 09:50

1 उत्तर

सबसे बढ़िया उत्तर

बैच मैट्रिक्स गुणन की गणना करने के लिए आपको 3D टेंसर के लिए निम्न प्रारूप सुनिश्चित करना होगा। 3 देखें -D टेंसर मैट्रिक्स गुणन।

[batchs, h`, w`] @ [batchs, w``, h``]

तो, आपके उपरोक्त मामले में, यह होना चाहिए

import tensorflow as tf

a1 = tf.constant(tf.random.normal(shape=(5,4,64)))

a1.shape, tf.transpose(a1, perm=[0, 2, 1]).shape
(TensorShape([5, 4, 64]), TensorShape([5, 64, 4]))

# swape the height and width - not batch axis 
tf.matmul(a1, tf.transpose(a1, perm=[0, 2, 1])).shape
TensorShape([5, 4, 4])
0
M.Innat 30 अप्रैल 2021, 10:40