Точечный слой в tensorflow.keras не может расставить точки в пакете с помощью матрицы: выдает ValueError - PullRequest
0 голосов
/ 06 мая 2020

Я строю сеть, используя тензорный поток 2, и мне нужно иметь возможность расставить точки тензор размерности (batch_size, 100) с константным тензором, который не меняется между партиями размерности (100, 60). Однако, когда я пытаюсь использовать слои tensorflow.keras.layers.dot или .Dot, я получаю одну из следующих ошибок, в зависимости от осей, которые я пытаюсь расставить точками:

axes = [1,0] --> ValueError: Cannot perform batch_dot over axis 0. If your inputs are not batched, add a dummy batch dimension to your inputs using K.expand_dims(x, 0)

axes = [0,1] --> ValueError: Dimension incompatibility None != 63. Layer shapes: (None, 100), (100, 63)

axes = [0,0] --> ValueError: Dimension incompatibility None != 100. Layer shapes: (None, 100), (100, 63)

axes == [1,1] -- ValueError: Dimension incompatibility 100 != 63. Layer shapes: (None, 100), (100, 63)

Вот мой code:

const_matrix = tf.Variable(np.random.randn(100,63))
inlayer = tf.keras.layers.Input(shape=(100,))
dotlayer = tf.keras.layers.Dot(axes = [1,1])([inlayer,const_matrix])

Думаю, ясно, что я пытаюсь сделать, и учитывая, что точечный продукт определен для любых двух матриц с соответствующими «внутренними размерами» (например, (mxn) * (nxk) ), Я не понимаю, почему размер партии вообще актуален. Как я могу завершить эту операцию?

Заранее большое спасибо за вашу помощь! Я искренне это ценю. Дайте мне знать, если я могу что-то уточнить.

...