通过TensorFlow框架搭建GRU模型实现对IMDB数据集的分析代码
时间: 2024-02-23 16:58:23 浏览: 55
基于tensorflow的IMDB文本情感分析完整代码(包含数据和词向量可直接运行)
4星 · 用户满意度95%
好的,以下是使用 TensorFlow 框架搭建 GRU 模型并实现对 IMDB 数据集的分析的代码:
首先,需要导入必要的库和数据集:
```python
import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences
vocab_size = 10000 # 词汇表大小
embedding_dim = 64 # 词向量维度
max_length = 500 # 句子最大长度
trunc_type = 'post' # 截断方式
padding_type = 'post' # 填充方式
oov_tok = '<OOV>' # 未知词汇的标记
# 加载 IMDB 数据集
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=vocab_size)
# 对数据进行填充和截断
train_data = pad_sequences(train_data, maxlen=max_length, truncating=trunc_type, padding=padding_type)
test_data = pad_sequences(test_data, maxlen=max_length, truncating=trunc_type, padding=padding_type)
```
接着,需要搭建 GRU 模型:
```python
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_dim, input_length=max_length),
tf.keras.layers.GRU(64),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
```
然后,可以使用训练集对模型进行训练:
```python
num_epochs = 10 # 迭代次数
# 训练模型
history = model.fit(train_data, train_labels, epochs=num_epochs, validation_data=(test_data, test_labels))
```
最后,可以使用测试集对模型进行评估:
```python
# 评估模型
test_loss, test_acc = model.evaluate(test_data, test_labels)
print('Test Loss: {}, Test Accuracy: {}'.format(test_loss, test_acc))
```
完整代码如下:
```python
import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences
vocab_size = 10000 # 词汇表大小
embedding_dim = 64 # 词向量维度
max_length = 500 # 句子最大长度
trunc_type = 'post' # 截断方式
padding_type = 'post' # 填充方式
oov_tok = '<OOV>' # 未知词汇的标记
# 加载 IMDB 数据集
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=vocab_size)
# 对数据进行填充和截断
train_data = pad_sequences(train_data, maxlen=max_length, truncating=trunc_type, padding=padding_type)
test_data = pad_sequences(test_data, maxlen=max_length, truncating=trunc_type, padding=padding_type)
# 搭建 GRU 模型
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_dim, input_length=max_length),
tf.keras.layers.GRU(64),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
num_epochs = 10 # 迭代次数
# 训练模型
history = model.fit(train_data, train_labels, epochs=num_epochs, validation_data=(test_data, test_labels))
# 评估模型
test_loss, test_acc = model.evaluate(test_data, test_labels)
print('Test Loss: {}, Test Accuracy: {}'.format(test_loss, test_acc))
```
阅读全文