cnn-lstm神经网络代码
时间: 2023-09-04 17:15:16 浏览: 120
下面是一个简单的CNN-LSTM神经网络的代码示例,用于文本分类任务:
```python
import tensorflow as tf
from tensorflow.keras.layers import Input, Dense, Dropout, LSTM, Conv1D, MaxPooling1D, Flatten
from tensorflow.keras.models import Model
# 定义输入层
inputs = Input(shape=(max_len,), dtype='int32')
# 定义词嵌入层
embedding_layer = Embedding(input_dim=num_words, output_dim=embedding_dim, input_length=max_len)(inputs)
# 定义一维卷积层
conv_layer = Conv1D(filters=128, kernel_size=5, activation='relu')(embedding_layer)
# 定义最大池化层
pool_layer = MaxPooling1D(pool_size=5)(conv_layer)
# 定义LSTM层
lstm_layer = LSTM(128)(pool_layer)
# 定义输出层
outputs = Dense(1, activation='sigmoid')(lstm_layer)
# 定义模型
model = Model(inputs=inputs, outputs=outputs)
# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(train_data, train_labels, epochs=10, batch_size=32, validation_data=(test_data, test_labels))
```
在这个示例中,我们首先定义了一个输入层,然后定义了一个词嵌入层,将输入的整数序列转换为密集的低维向量表示。然后我们定义了一个一维卷积层和一个最大池化层,用于提取文本序列的局部特征。接下来,我们使用LSTM层对文本序列进行建模,并在最后添加一个输出层以进行二元分类。最后,我们使用Adam优化器和二元交叉熵损失函数进行模型编译,并在训练数据上训练模型。
阅读全文