No hay transmisión para tf.matmul en TensorFlow

Tengo un problema con el que he estado luchando. Está relacionado contf.matmul() y su ausencia de radiodifusión.

Soy consciente de un problema similar enhttps://github.com/tensorflow/tensorflow/issues/216, perotf.batch_matmul() No parece una solución para mi caso.

Necesito codificar mis datos de entrada como un tensor 4D:X = tf.placeholder(tf.float32, shape=(None, None, None, 100)) La primera dimensión es el tamaño de un lote, la segunda el número de entradas en el lote. Puede imaginar cada entrada como una composición de varios objetos (tercera dimensión). Finalmente, cada objeto se describe mediante un vector de 100 valores flotantes.

Tenga en cuenta que usé None para la segunda y tercera dimensiones porque los tamaños reales pueden cambiar en cada lote. Sin embargo, por simplicidad, demos forma al tensor con números reales:X = tf.placeholder(tf.float32, shape=(5, 10, 4, 100))

Estos son los pasos de mi cálculo:

Calcular una función de cada vector de 100 valores flotantes (por ejemplo, función lineal)W = tf.Variable(tf.truncated_normal([100, 50], stddev=0.1)) Y = tf.matmul(X, W) problema: sin transmisión paratf.matmul() y sin éxito usandotf.batch_matmul() forma esperada de Y: (5, 10, 4, 50)

aplicando la agrupación promedio para cada entrada del lote (sobre los objetos de cada entrada):Y_avg = tf.reduce_mean(Y, 2) forma esperada de Y_avg: (5, 10, 50)

Yo esperaba quetf.matmul() habría apoyado la transmisión. Entonces encontrétf.batch_matmul(), pero aún así parece que no se aplica a mi caso (por ejemplo, W debe tener al menos 3 dimensiones, no está claro por qué).

Por cierto, arriba usé una función lineal simple (los pesos de los cuales se almacenan en W). Pero en mi modelo tengo una red profunda en su lugar. Entonces, el problema más general que tengo es calcular automáticamente una función para cada segmento de un tensor. Por eso esperaba quetf.matmul() habría tenido un comportamiento de transmisión (si es así, tal veztf.batch_matmul() Ni siquiera sería necesario).

¡Esperamos aprender de ti! Alessio

Respuestas a la pregunta(2)

Su respuesta a la pregunta