tensorflow实战一.电影评论二分类

1.数据准备

使用数据为imdb数据集,每一条记录为用户对电影的评论(feature),以及评论是正/负向的(label)

数据集可以直接从tensorflow.keras.datasets中导入



import tensorflow as tf

from tensorflow import keras

import matplotlib.pyplot as plt

imdb=keras.datasets.imdb

#取10000个最常出现的词

(x_train,y_train),(x_test,y_test)=imdb.load_data(num_words=10000)



num_words=10000,即每条评论只保留频率最高的10000的单词,避免内存爆炸

数据集格式如下:

其中对每条评论已经分词,并取各个单词对应的id,得到每条评论的单词集合

label即为0/1

在输入DNN模型前,首先要对数据进行预处理。将每条评论的单词集合转换为one-hot向量

#对列表进行one-hot编码

import numpy as np

def vectorize_sequences(sequences,dimension=10000):

    results=np.zeros((len(sequences),dimension))

    for i ,sequences in enumerate(sequences):

        results[i,sequences]=1.

    return results

x_train=vectorize_sequences(x_train)

x_test=vectorize_sequences(x_test)

y_train=np.asanyarray(y_train).astype('float32')

y_test=np.asanyarray(y_test).astype('float32')

2.建立模型

一个简单的DNN模型:

model=keras.models.Sequential()

model.add(keras.layers.Dense(16,activation='relu',input_shape=(10000,)))

model.add(keras.layers.Dense(16,activation='relu'))

model.add(keras.layers.Dense(1,activation='sigmoid'))

编译模型:

指定损失函数,优化器,评估指标等

# model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])

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

将训练数据train_x划分为训练集和验证集:

(这里只是简单取前1000条训练数据作为验证集,实际中一般随机抽取)

x_val=x_train[:10000]y_val=y_train[:10000]x_train_t=x_train[10000:]y_train_t=y_train[10000:]

3.训练模型

2

4.查看训练集,验证集误差

这里采用可视化方式,模型结果保存在history.history中


5. 模型预测

pre=model.predict(x_test)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容