Tôi có một biến a
của kích thước (1, 5) mà tôi muốn 'gạch' nhiều lần như kích thước của mini-batch của tôi. Ví dụ, nếu kích thước lô nhỏ là 32 thì tôi muốn xây dựng một tensor c
của kích thước (32, 5) trong đó mỗi hàng có giá trị giống với biến ban đầu (1, 5) a
.hình dạng tensorflow của một tensor lát gạch
Nhưng tôi chỉ biết kích thước mini-lô tại thời gian chạy: đó là kích thước của chiều 0 của một placeholder b
: tf.shape(b)[0]
Dưới đây là mã của tôi để xây dựng c:
a = tf.Variable(np.random.uniform(size=(1,5)))
b = tf.placeholder(shape=[None, 12], dtype=tf.float32)
batch_size = tf.shape(b)[0]
c = tf.tile(a, tf.pack([batch_size, 1]))
này chạy tốt . Tuy nhiên c.get_shape()
trả về (?,?). Tôi không hiểu tại sao điều này không trả lại (?, 5) thay thế.
Điều này gây ra sự cố sau trong mã của tôi khi tôi tạo biến ma trận W
với số cột c.get_shape()[1]
mà tôi dự kiến trả về 5 thay vì?
Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn.
Phiên bản nào? Một vấn đề tương tự đã được giải quyết trong 0.10rc. Ngoài ra bạn có thể sử dụng set_shape như một workaround –
Cảm ơn, set_shape thực hiện công việc. . Là phiên bản 0.8.0rc0. –