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
не подходит.
Как правильно выполнить умножение матриц на входе тензорной матрицы (для неизвестного размера партии)?