keras IMDB数据集 LSTM分类

在keras提供的IMDB数据集中,word被映射为一个大于0的整数,表示该单词出现频率的排名,这样处理的目的是为了方便按照词频过滤单词,其中0用于表示unknown word

载入数据
x_train.shape=(25000,) 是一个25000维的向量,每个元素是一个int型的list,表示该样本的word sequence
y_train.shape=(25000,) 是一个25000维的向量,其中包含12500个0,12500个1
x_test.shape=(25000,)
y_test.shape=(25000,) 包含12500个0,12500个1

调用sequence.pad_sequences对样本进行处理,使得所有样本的word sequence为指定长度(此处为80)
比指定长度短的word sequence填充0
比指定长度长的word sequence直接截断
x_train.shape=(25000, 80)
x_test.shape=(25000, 80)

model的第1层为Embedding层,将一个正整数编码为一个dense vector
输入:(batch_size, sequence_length)
输出:(batch_size, sequence_length, output_dim)

以x_train输入到Embedding( input_dim=200000, output_dim=128 )为例,input_dim表示正整数的最大值+1,output_dim为dense vector的维度
输入:x_train.shape=(25000, 80)
输出:x_train_embedding.shape=(25000, 80, 128)

在Embedding层之上添加
model.add( LSTM( 128, dropout=0.2, recurrent_dropout=0.2 ) )
model.add( Dense( 1, activation=’sigmoid’ ) )

源代码见https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py

你可能感兴趣的:(keras IMDB数据集 LSTM分类)