Как расширить вывод встраиваемого слоя в керас
У меня есть следующая сеть:
model = Sequential()
model.add(Embedding(400000, 100, weights=[emb], input_length=12, trainable=False))
model.add(Conv2D(256,(2,2),activation='relu'))
выход из слоя внедрения имеет форму (batchSize, 12, 100). Слой conv2D требует ввода формы (batchSize, filter, 12, 100), и я получаю следующую ошибку:
Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=3
Итак, как я могу расширить вывод из слоя внедрения, чтобы он соответствовал слою Conv2D?
Я использую Keras с Tensorflow в качестве задней части.
2 ответа
Решение
Мне удалось добавить другое измерение со следующим фрагментом кода:
model = Sequential()
model.add(Embedding(400000, 100, weights=[emb], input_length=12, trainable=False))
model.add(Lambda(lambda x: expand_dims(x, 3)))
model.add(Conv2D(256,(2,2),activation='relu'))
Добавление измененного слоя должно стать способом https://keras.io/layers/core/ В зависимости от конкретной ситуации Conv1D холодный, хотя и работает.