[英]How to stack Convolutional Layer and LSTM using Tensorflow2.0 alpha?
我正在嘗試為具有卷積層和LSTM層的NLP任務實現神經網絡。 我目前正在嘗試使用新的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]
最初,我嘗試檢查關於使用LSTM
層實現Conv1D
層是否存在任何問題。 我發現了這篇帖子 ,暗示了這一點 ,以便我重塑卷積層和lstm層之間的層。 但這仍然不起作用,而是出現了另一個錯誤。 這篇文章看起來很相似,但到目前為止並未使用Tensorflow 2.0,也沒有回答。 我還發現這篇文章的意圖是堆疊卷積層和lstm層。 但是它使用Conv2D
而不是Conv1D
。 這篇文章還建議將卷積層的輸出與內置的稱為Reshape
層一起使用。 但是,我仍然遇到相同的錯誤。
我還嘗試在LSTM層中指定input_shape
。
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仍然是Alpha,但是有人可以指出我所缺少的嗎? 提前致謝
該問題是維度問題。 您的特征的形狀為[..., 1, 512]
; 因此, MaxPooling1D
pooling_size
2大於1導致此問題。
添加padding="same"
將解決此問題。
model = tf.keras.Sequential()
model.add(tf.keras.layers.InputLayer(input_shape=(None, 512)))
model.add(tf.keras.layers.Conv1D(128, 1, activation="relu"))
model.add(tf.keras.layers.MaxPooling1D(2, padding="same"))
model.add(tf.keras.layers.LSTM(64, activation="tanh"))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(6))
model.add(tf.keras.layers.Activation("softmax"))
padding =“ same”應該可以解決您的問題。
更改以下行:
model.add(tf.keras.layers.MaxPooling1D(2, padding="same"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.