Tôi có một số dữ liệu được đại diện bởi input_x
. Nó là một tensor có kích thước không xác định (nên được nhập vào theo lô) và mỗi mục có kích thước n
. input_x
trải qua tf.nn.embedding_lookout
, sao cho embed
hiện có kích thước [?, n, m]
trong đó m
là kích thước nhúng và ?
là kích thước lô không xác định.Tensorflow - matmul của ma trận đầu vào với dữ liệu lô
này được mô tả ở đây:
input_x = tf.placeholder(tf.int32, [None, n], name="input_x")
embed = tf.nn.embedding_lookup(W, input_x)
bây giờ tôi đang cố gắng để nhân lên mỗi mẫu trong dữ liệu đầu vào của tôi (mà bây giờ là một ma trận nhúng) bởi một biến ma trận, U
, và tôi dường như không thể để biết cách làm điều đó.
Lần đầu tiên tôi thử sử dụng tf.matmul
nhưng lỗi này do lỗi không phù hợp về hình dạng. sau đó tôi thử như sau, bằng cách mở rộng kích thước của U
và áp dụng batch_matmul
(Tôi cũng đã cố gắng hàm từ tf.nn.math_ops.
, kết quả là như nhau):
U = tf.Variable(...)
U1 = tf.expand_dims(U,0)
h=tf.batch_matmul(embed, U1)
này vượt qua biên soạn ban đầu, nhưng sau đó khi dữ liệu thực tế là ứng dụng, tôi nhận được lỗi sau:
In[0].dim(0) and In[1].dim(0) must be the same: [64,58,128] vs [1,128,128]
tôi cũng biết tại sao điều này xảy ra - tôi lặp lại kích thước của U
và bây giờ là 1
, nhưng kích thước minibatch, 64
, doesn' t phù hợp.
Làm cách nào tôi có thể thực hiện phép nhân ma trận trên đầu vào ma trận tensor của mình một cách chính xác (đối với kích thước lô chưa biết)?
Chỉ cần thêm một điều. Bạn sẽ phải thêm initializer để quét chức năng, với kích thước của đầu ra của hai phép nhân ma trận của bạn, U * x –
Hiện tại [tf.matmul] (http://stackoverflow.com/a/43829731/1090562) là quyền cách để làm phép nhân hàng loạt. –