Tensorflow - матрица входной матрицы с пакетными данными

У меня есть некоторые данные, представленныеinput_x, Это тензор неизвестного размера (должен вводиться партией), и каждый элемент имеет размерn. input_x подвергаетсяtf.nn.embedding_lookup, чтобыembed теперь имеет размеры[?, n, m] гдеm это размер вложения и? относится к неизвестному размеру партии.

Это описано здесь:

input_x = tf.placeholder(tf.int32, [None, n], name="input_x") 
embed = tf.nn.embedding_lookup(W, input_x)

Сейчас я пытаюсь умножить каждый образец в моих входных данных (который теперь расширяется путем вложения измерения) на матричную переменную,Uи я не могу понять, как это сделать.

Я сначала попробовал с помощьюtf.matmul но это дает ошибку из-за несоответствия форм. Затем я попробовал следующее, расширив измерениеU и применяяbatch_matmul (Я также попробовал функцию отtf.nn.math_ops., результат был тот же):

U = tf.Variable( ... )    
U1 = tf.expand_dims(U,0)
h=tf.batch_matmul(embed, U1)

Это проходит первоначальную компиляцию, но затем, когда применяются фактические данные, я получаю следующую ошибку:

In[0].dim(0) and In[1].dim(0) must be the same: [64,58,128] vs [1,128,128]

Я также знаю, почему это происходит - я повторил измерениеU и сейчас1, но размер мини-партии,64не подходит.

Как правильно выполнить умножение матриц на входе тензорной матрицы (для неизвестного размера партии)?

Ответы на вопрос(5)

Ваш ответ на вопрос