Explicación y pensamiento de la función tf.transpose () y la operación de transposición del tensor (parámetro perm)

Explanation Thinking Tf

Hoy, compartiré con ustedes el uso de la función de transposición de tensor Tensor tf.transpose () en TensorFlow, centrándome en su parámetro permanente y su principio.

Orden de tensor

Antes de comenzar a introducir la función de transposición, echemos un vistazo al orden de Tensor



Cuando el tensor Tensor es un escalar, es decir, un escalar sin dirección, su orden es 0



|_+_|

Cuando Tensor es un vector, como [1, 2, 3], su orden es 1



|_+_|

Cuando Tensor es una matriz, su orden es 2, como
imagen

|_+_|

Y el tensor de tercer orden se puede considerar como un conjunto de números de cubo, compuesto por múltiples cubos pequeños, y cada cubo pequeño almacena un número, como se muestra en la siguiente figura:

3



|_+_|

Transposición de tensor

A continuación, discutiremos la transposición de Tensor.

Se puede decir que la transposición de orden 0 y orden 1 tensor no tiene sentido la transposición de orden 2 tensor es equivalente a la transposición de matriz, como
2
transponer a
2
pertenece a la parte de álgebra lineal de la universidad y no necesita ser introducido demasiado

Centrémonos en Transposición del tensor de orden 3 , Entonces necesitas usar la función tf.transpose ()

En el documento oficial de la función tf.transpose (), se introduce que la función tiene un parámetro perm, y la transposición de Tensor se completa especificando el valor de perm.

perm representa el cambio especificado del orden del tensor. Suponiendo que el tensor es de orden 2 y su forma = (x, y), en este estado, perm = [0, 1] por defecto. Cuando se transpone el tensor de segundo orden, si especifica tf.transpose (perm = [1, 0]), la transposición de la matriz se completa directamente y la forma del tensor en este momento = (y, x).

|_+_|

Cuando el objeto de procesamiento es un tensor de tercer orden, en el ejemplo siguiente, Documento oficial Esta oración se da en:
imagen

|_+_|

Entonces la pregunta es, ¿por qué establecer perm = [0, 2, 1]? Cuando se establece el parámetro perm = [0, 2, 1], ¿por qué obtengo tal resultado de transposición?

Explicación detallada de la función tf.transpose () y los parámetros de perm

Esto está relacionado con la forma del propio tensor original.

Primero mira cómo está compuesto el Tensor x3. En el tensor, el corchete más externo contiene 2 corchetes, y estos dos corchetes contienen 2 corchetes respectivamente, y estos dos corchetes contienen 3 valores de tipo int, por lo que su valor de forma es (2, 2, 3). Cuando dibujamos este tensor 3D en un gráfico de volumen, como se muestra en la siguiente figura.
3

|_+_|

Aquí viene la clave, aquí podemos entender la permanente como El orden de corte para cortar el cubo. . Sabemos que la forma del tensor x3 es (2, 2, 3), que corresponde al orden de corte de la permanente original. El orden es Córtelo verticalmente y paralelo al lado.Cortar horizontalmente de nuevoCortar de nuevo verticalmente y paralelo al borde horizontal , Como se muestra en la figura siguiente, se obtiene la forma original de Tensor.
1
Definimos este orden de corte como 0, 1, 2 a su vez, por lo que perm = [0, 1, 2], como se muestra en la siguiente figura:
imagen
Después de comprender esta correspondencia. Veamos cómo podemos determinar la forma del tensor transpuesto si no se pasa el resultado del código.

Cuando transponemos este tensor tridimensional x3 y establecemos el valor de la permanente en [0, 2, 1], la forma correspondiente en este momento se transformará en (2, 3, 2). ¿Por qué?

perm = [0, 2, 1] significa que el cubo debe cortarse en el siguiente orden: Córtelo verticalmente y paralelo al lado.Cortar de nuevo verticalmente y paralelo al borde horizontalCortar horizontalmente de nuevo , Como se muestra en la figura siguiente, la forma del tensor transpuesto se obtiene
imagen
imagen
En este momento, usamos la declaración de función tf.transpose (x3, perm = [0, 2, 1]) para verificar que el resultado de la transposición es consistente con el resultado de la deducción. En otras palabras, el tensor con forma = (2, 2, 3) se transpone mediante perm = [0, 2, 1] y se convierte en el tensor con forma = (2, 3, 2).

|_+_|

Por eso, en el tutorial del sitio web oficial de TensorFlow2.0, La recomendación oficial es cuando la dimensión Tensor es mayor que 2Utilice parámetros de permanente para la operación de transposición , Será más conveniente lograr el efecto. Por supuesto, la premisa es que debe aclarar la forma del tensor original y la forma del tensor deformada que desea, y determinar el valor del parámetro permanente de acuerdo con los requisitos posteriores.

¡Espero que este artículo sea útil para que todos comprendan Tensor!