推荐系统Embedding层的简单实践与代码超详细注释

推荐系统中,得Embedding者得天下,这也是面试中被高频提问的,所以务必要搞清楚其原理与基础的使用方法。

Embedding就是将正整数(索引值)转换为固定尺寸的稠密向量。 例如: [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]

把Embedding讲的通俗易懂的建议看这篇

接下来我将以IMDB数据集进行实操(虽然很多人做过了,但我总觉得讲的不够清楚,所以自己重新注释和整合一下)

IMDB 数据集介绍 IMDB 数据集包含来自互联网电影数据库(IMDB)的 50 000 条严重两极分化的评论。
数据集被分为用于训练的 25 000 条评论与用于测试的 25 000 条评论,训练集和测试集都包含 50% 的正面评论和 50% 的负面评论。 train_labels 和 test_labels 都是 0 和 1 组成的列表,其中 0代表负面(negative),1 代表正面(positive)。
IMDB 数据集内置于 Keras 库。它已经过预处理:评论(单词序列)已经被转换为整数序列,其中每个整数代表字典中的某个单词。

熟悉数据集

看字不如直接看数据集:

from keras.datasets import imdb
from keras import preprocessing
from keras.models import Sequential
from keras.layers import Flatten, Dense, Embedding

# 特征单词数
max_words = 10000
# 在20单词后截断文本
# 这些单词都属于max_words中的单词
maxlen = 20
# 嵌入维度
embedding_dim = 8
# 加载数据集
# 加载的数据已经序列化过了,每个样本都是一个sequence列表
#仅保留训练数据中前 10 000 个最常出现的单词。低频单词将被舍弃。这样得到的向量数据不会太大,便于处理。
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_words)

详细看一下:
在这里插入图片描述
在这里插入图片描述

可以看出输入的训练数据是个序列化数据。这时候你再去看那一段字就很清晰了。

特征单词数 max_words = 10000的设置就是限制了只出现前10000个高频词语,也就是说,在x_train当中的数值,只会出现高频TOP10000.

x_train中,例如x_train[0]就是一条评论,有218个词;x_train[1]这条评论有189个词。

通过以下代码可转换为原来的句子,可以看一下(这段代码和后续建模无关)

# word_index is a dictionary mapping words to an integer index
word_i
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值