Как связать скаляр с одномерным вектором в Керасе? - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть слой Shape Keras (None, 8), и я хотел бы добавить один скаляр (значение = 1) в конец тензора.Однако я не был успешным.

Вот мой код (упрощенно):

print(layers)
# Tensor("feature_layer_2_89/Relu:0", shape=(?, 8), dtype=float32)
pad_tensor = tf.constant([1.0])
concat = concatenate([layers, pad_tensor])

Я получаю следующую ошибку:

ValueError: A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, 8), (1,)]

РЕДАКТИРОВАТЬ: В основном яхотите добавить скаляр (со значением 1) к вектору.Например, заданный вектор (1D Tensor) [1 3 3 0 2], как произвести [1 3 3 0 2 1], и я не хочу связываться с размером пакета, который здесь None.

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете создать pad_tensor так, чтобы он имел ранг 2, как предложил @Psidom.Итак, сначала нам нужно получить batch_size следующим образом:

batch_size = tf.shape(layers)[0]
padding_tensor = tf.ones([batch_size, 1])

Теперь мы можем использовать функцию concatenate для объединения двух тензоров:

concat = concatenate([layers, padding_tensor])
...