Я пытаюсь реализовать нейронную сеть для задачи НЛП со сверточным уровнем, за которым следует слой LSTM.В настоящее время я экспериментирую с новым Tensorflow 2.0, чтобы сделать это.Однако при построении модели я столкнулся с ошибкой, которую не смог понять.
# Input shape of training and validation set
(1000, 1, 512), (500, 1, 512)
Модель
model = keras.Sequential()
model.add(keras.layers.InputLayer(input_shape=(None, 512)))
model.add(keras.layers.Conv1D(128, 1, activation="relu"))
model.add(keras.layers.MaxPooling1D((2)))
model.add(keras.layers.LSTM(64, activation="tanh"))
model.add(keras.layers.Dense(6))
model.add(keras.layers.Activation("softmax"))
Ошибка
InvalidArgumentError: Tried to stack elements of an empty list with non-fully-defined element_shape: [?,64]
[[{{node unified_lstm_16/TensorArrayV2Stack/TensorListStack}}]] [Op:__inference_keras_scratch_graph_26641]
Сначала я попытался проверить, есть ли какие-либо проблемы, связанные с реализацией слоя Conv1D
со слоем LSTM
.Я нашел этот пост , в котором предлагалось изменить форму слоя между сверточным слоем и слоем lstm.Но это все равно не сработало, и вместо этого я получил другую ошибку. Этот пост кажется похожим, но он не использует Tensorflow 2.0 и пока не отвечает.Я также нашел этот пост, который имеет такое же намерение укладывать сверточный и нижний слои.Но он использует Conv2D
вместо Conv1D
. В этом посте также предлагается использовать измененный вывод сверточного слоя со встроенным слоем под названием Reshape
.Тем не менее, я все еще получаю ту же ошибку.
Я также пытался указать input_shape
в слое LSTM.
model = keras.Sequential()
model.add(keras.layers.InputLayer(input_shape=(None, 512)))
model.add(keras.layers.Conv1D(128, 1, activation="relu"))
model.add(keras.layers.MaxPooling1D((2)))
model.add(keras.layers.LSTM(64, activation="tanh", input_shape=(None, 64)))
model.add(keras.layers.Dense(6))
model.add(keras.layers.Activation("softmax"))
И в конце концов я все еще получил ту же ошибку.
Я не уверен, понимаю ли я, как сложить одномерный сверточный слой и слой lstm.Я знаю, что TF2.0 по-прежнему является Альфой, но кто-то может указать, что мне не хватало?Заранее спасибо