Изменить форму вывода слоя встраивания для Conv2D? - PullRequest
0 голосов
/ 03 августа 2020

Встраиваемый слой имеет форму вывода

embedding_4 (Embedding)         (None, 10, 50)

Где 10 - количество слов, а 50 - размерность вектора. Как изменить форму тензора, чтобы он вводился в слой

Conv2D(50,(2,50),padding='same',activation='relu')

. Использование Keras для написания кода.

1 Ответ

0 голосов
/ 05 августа 2020

Итак, как следует из комментария, будет лучше, если вы будете использовать Conv1D, поскольку ввод, необходимый для Conv1D, имеет ранг 3. Кроме того, для Conv2d вам потребуется ввод с рангом 4.

Чтобы фактически изменить форму ввода, вы можете сделать следующее:

example = np.zeros((32,10,50))

reshape = np.expand_dims(example , axis=1)

Результат будет:

(32, 1, 10, 50)

Вы также можете использовать API изменения формы из Keras, как показано ниже.

import tensorflow as tf

model = tf.keras.Sequential()
model.add(tf.keras.layers.Reshape((1, 10, 50), input_shape=(10, 50)))

model.output_shape

Форма вывода будет следующей:

(None, 1, 10, 50)

Так же, как примечание None будет вашим batch_size, а 1 - вашим каналом.

Но также, как и в комментарии, вы должны спросить себя, какую пользу Conv2D принесет это Conv1D нет.

...