给出完整代码
时间: 2023-07-09 07:18:37 浏览: 30
好的,以下是基于Keras实现的完整代码:
```python
import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Embedding, Dropout
# 设定超参数
vocab_size = 5000
embedding_dim = 64
max_length = 200
trunc_type = 'post'
padding_type = 'post'
oov_tok = '<OOV>'
training_size = 25000
batch_size = 128
epochs = 10
# 加载IMDB数据集
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=vocab_size, oov_char=oov_tok)
# 对文本序列进行填充和截断
train_data = pad_sequences(train_data, maxlen=max_length, padding=padding_type, truncating=trunc_type)
test_data = pad_sequences(test_data, maxlen=max_length, padding=padding_type, truncating=trunc_type)
# 构建模型
model = Sequential([
Embedding(vocab_size, embedding_dim, input_length=max_length),
Dropout(0.5),
LSTM(64, return_sequences=True),
LSTM(32),
Dense(1, activation='sigmoid')
])
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(train_data[:training_size], train_labels[:training_size], batch_size=batch_size, epochs=epochs, validation_data=(test_data, test_labels))
# 评估模型
loss, accuracy = model.evaluate(test_data, test_labels)
print('Test accuracy:', accuracy)
```
但需要注意的是,由于数据集的大小和计算资源的限制,上述代码中为了加快模型训练速度,我们只使用了IMDB数据集的前25,000条数据进行训练。如果您有更多的计算资源和时间,可以考虑使用更多的数据进行训练。