Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • Issue
  • #3075

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
已关闭
开放中
Opened 7月 26, 2017 by saxon_zh@saxon_zhGuest

integer_value_sequence与sparse_binary_vector的区别

Created by: cszhou

问题1 在05.recommender_system的train.py代码中category_id与movie_title的数据形式应该是一致的,都是有多个nominal的可能值。具体来说就是,category_id对应category_dict中的多个取值,movie_title类似。 但是这两个选择了不同的数据类型integer_value_sequence与sparse_binary_vector,这个有什么区别。如果没有区别的话,在实际中要怎么选择。

def get_mov_combined_features():
    movie_title_dict = paddle.dataset.movielens.get_movie_title_dict()
    mov_id = paddle.layer.data(
        name='movie_id',
        type=paddle.data_type.integer_value(
            paddle.dataset.movielens.max_movie_id() + 1))
    mov_emb = paddle.layer.embedding(input=mov_id, size=32)
    mov_fc = paddle.layer.fc(input=mov_emb, size=32)

    mov_categories = paddle.layer.data(
        name='category_id',
        type=paddle.data_type.sparse_binary_vector( #Datatype: sparse_binary_vector
            len(paddle.dataset.movielens.movie_categories())))
    mov_categories_hidden = paddle.layer.fc(input=mov_categories, size=32)

    mov_title_id = paddle.layer.data(
        name='movie_title',
        type=paddle.data_type.integer_value_sequence(len(movie_title_dict))) #Datatype: integer_value_sequence
    mov_title_emb = paddle.layer.embedding(input=mov_title_id, size=32)
    mov_title_conv = paddle.networks.sequence_conv_pool(
        input=mov_title_emb, hidden_size=32, context_len=3)

问题2 在代码中

global MOVIE_TITLE_DICT
MOVIE_TITLE_DICT = dict()
for i, w in enumerate(title_word_set):
   MOVIE_TITLE_DICT[w] = i

global CATEGORIES_DICT
CATEGORIES_DICT = dict()
for i, c in enumerate(categories_set):
     CATEGORIES_DICT[c] = i

在给出的例子中nominal类型的数据都先建立一个nominal特征的dict用来存储nominal特征的全部可能,假设全部可能为len = length(dict)全集。然后得到每个nomial特征唯一的index。index的取值为[1, index]。 问,是否可以使用简单的hash得到index,而不用经过建dict,找唯一index这个步骤? 再具体的,如果我的nominal特征是user_id,user_id共有100个取值可能,第一个user_id的取值为999,第二个user_id取值为888。这些user_id是否可以直接以下面的形式使用。

user_id = paddle.layer.data(
        name='user',
        type=paddle.data_type.integer_value(100)) #使用的数据类型是integer_value

问题3 在问题2的例子中,使用的数据类型是integer_value,能否使用sparse_binary_vector。区别是什么?

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/Paddle#3075
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7