笔记:使用简单的RNN网络预测电影评论

首先加载IMDB数据

from keras.datasets import imdb
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

对原始数据预处理,把整数列表转化为张量

import numpy as np
from keras.preprocessing import sequence

max_features = 10000
maxlen = 500
#把整数列表转化为二位整数张量,同时保持相同长度
train_data = sequence.pad_sequences(train_data, maxlen)
test_data = sequence.pad_sequences(test_data, maxlen)
print('train_data shape:{}, test_data shape:{}'.format(train_data.shape, test_data.shape))

构建网络

from keras import models
from keras import layers

#构建一个简单的RNN网络,一个Embedding层和一个LSTM层
model = models.Sequential()
model.add(layers.Embedding(max_features, 32)) #将max_fetures个单词嵌入到32个序列中?
model.add(layers.LSTM(32))
model.add(layers.Dense(1, activation='sigmoid'))

编译网络

from keras import optimizers
model.compile(optimizer=optimizers.RMSprop(lr=0.001),
              loss='binary_crossentropy',
              metrics=['acc'])

训练模型&测试

history = model.fit(train_data, train_labels, batch_size=128, epochs=4, validation_split=0.2)
result = model.evaluate(test_data, test_labels)
print(result)

测试集上模型精确度为87%


IMDB02.PNG

训练过程中的损失和精度图表

import matplotlib.pyplot as plt

acc = history.history['acc']
val_acc = history.history['val_acc']
loss = history.history['loss']
val_loss = history.history['val_loss']
epoch = range(1, len(acc)+1)

plt.plot(epoch, acc, 'bo', label='Train acc')
plt.plot(epoch, val_acc, 'b', label='Validation acc')
plt.title('Train & Validation accuracy')
plt.legend()

plt.figure()
plt.plot(epoch, loss, 'bo', label='Train loss')
plt.plot(epoch, val_loss, 'b', label='Validation loss')
plt.title('Train & Validation loss')
plt.legend()

plt.show()
Figure_1.png

Figure_2.png

之前将epochs设置成10,及训练10轮,总体感觉在第4轮时精度和损失达到了比较平衡的点。
训练用了近10分钟,往后更复杂的模型可能要移到拥有独立显卡的计算机上运行了。模型精确度达到了87%,并没有比之前简单的密集层深度学习网络高,其中一个原因是每条评论只读取前500个单词,并不像之前每条评论从头到尾都塞进模型进行计算。其二可能与这个RNN模型构建过于简单有关。

感想

  1. 和现在AI技术对图片的识别并非真正能理解图片内涵一样,现在的语音识别技术也并非真正理解话语的意思。当前人工智能离通俗意义上的“智能”还有距离,但是并不妨碍当前的AI技术用来解决问题。
  2. 学到现在,感觉对与细节知识、基础知识并未完全领会。比如为何模型要构建成这样、数学解释和数学逻辑、如何优化参数等等。如果给在给我一次重来的机会,我一定要学好高数,并且大学、研究生专业选择人工智能专业,踏踏实实花个3~6年研究下。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。