码迷,mamicode.com
首页 > 数据库 > 详细

keras实例学习-双向LSTM进行imdb情感分类

时间:2019-04-08 13:14:20      阅读:552      评论:0      收藏:0      [点我收藏+]

标签:code   dir   process   lstm   浮点   add   pad   前端   意思   

源码:https://github.com/keras-team/keras/blob/master/examples/imdb_bidirectional_lstm.py

keras中文文档

1.imdb数据集

 数据集来自 IMDB 的 25,000 条电影评论,以情绪(正面/负面)标记。评论已经过预处理,并编码为词索引(整数)的序列表示。为了方便起见,将词按数据集中出现的频率进行索引,例如整数 3 编码数据中第三个最频繁的词。

这允许快速筛选操作,例如:「只考虑前 10,000 个最常用的词,但排除前 20 个最常见的词」。

作为惯例,0 不代表特定的单词,而是被用于编码任何未知单词。

from keras.datasets import imdb

(x_train, y_train), (x_test, y_test) = imdb.load_data(path="imdb.npz",
                                                      num_words=None,
                                                      skip_top=0,
                                                      maxlen=None,
                                                      seed=113,
                                                      start_char=1,
                                                      oov_char=2,
                                                      index_from=3)
  • 返回:

    • 2 个元组:
    • x_train, x_test: 序列的列表,即词索引的列表。如果指定了 num_words 参数,则可能的最大索引值是 num_words-1。如果指定了 maxlen 参数,则可能的最大序列长度为 maxlen
    • y_train, y_test: 整数标签列表 (1 或 0)。
  • 参数:

    • path: 如果你本地没有该数据集 (在 ‘~/.keras/datasets/‘ + path),它将被下载到此目录。
    • num_words: 整数或 None。要考虑的最常用的词语。任何不太频繁的词将在序列数据中显示为 oov_char 值。
    • skip_top: 整数。要忽略的最常见的单词(它们将在序列数据中显示为 oov_char 值)。
    • maxlen: 整数。最大序列长度。 任何更长的序列都将被截断。
    • seed: 整数。用于可重现数据混洗的种子。
    • start_char: 整数。序列的开始将用这个字符标记。设置为 1,因为 0 通常作为填充字符。
    • oov_char: 整数。由于 num_words 或 skip_top 限制而被删除的单词将被替换为此字符。
    • index_from: 整数。使用此数以上更高的索引值实际词汇索引的开始。

 //主要还是关注num_words和maxlen两个参数吧,这两个都在我的ibdm_Bilstm.ipynb里试了。

num_words=2000,意思是只取下标为前2000的,出现次数最频繁的前2000个单词;maxlen=500是针对评论来说的,只取长度≤500的。

2.数据预处理

x_train=sequence.pad_sequences(x_train,maxlen=maxlen)
keras.preprocessing.sequence.pad_sequences(sequences, maxlen=None, dtype=int32, padding=pre, truncating=pre, value=0.0)

将多个序列截断或补齐为相同长度

该函数将一个 num_samples 的序列(整数列表)转化为一个 2D Numpy 矩阵,其尺寸为 (num_samples, num_timesteps)。 num_timesteps 要么是给定的 maxlen 参数,要么是最长序列的长度

比 num_timesteps 短的序列将在末端以 value 值补齐。

比 num_timesteps 长的序列将会被截断以满足所需要的长度。补齐或截断发生的位置分别由参数 pading 和 truncating 决定。

向前补齐为默认操作。

参数

  • sequences: 列表的列表,每一个元素是一个序列。
  • maxlen: 整数,所有序列的最大长度。
  • dtype: 输出序列的类型。 要使用可变长度字符串填充序列,可以使用 object
  • padding: 字符串,‘pre‘ 或 ‘post‘ ,在序列的前端补齐还是在后端补齐。
  • truncating: 字符串,‘pre‘ 或 ‘post‘ ,移除长度大于 maxlen 的序列的值,要么在序列前端截断,要么在后端。
  • value: 浮点数,表示用来补齐的值。

返回

  • x: Numpy 矩阵,尺寸为 (len(sequences), maxlen)

异常

  • ValueError: 如果截断或补齐的值无效,或者序列条目的形状无效。

//默认补齐和截断都是在序列前端pre的。

 

keras实例学习-双向LSTM进行imdb情感分类

标签:code   dir   process   lstm   浮点   add   pad   前端   意思   

原文地址:https://www.cnblogs.com/BlueBlueSea/p/10669837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!