Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

06.understand_sentiment情感分析中的问题 #804

Open
freefreesea opened this issue Sep 6, 2019 · 12 comments
Open

06.understand_sentiment情感分析中的问题 #804

freefreesea opened this issue Sep 6, 2019 · 12 comments
Assignees

Comments

@freefreesea
Copy link

def inference_program(word_dict):
data = fluid.layers.data(
name="words", shape=[1], dtype="int64", lod_level=1)

dict_dim = len(word_dict)
pred = dynamic_rnn_lstm(data, dict_dim, CLASS_DIM, EMB_DIM, LSTM_SIZE)
return pred

请问这个创建的data层为什么shape是[1]呢?
我看了之前的实例,这个data中的shape都代表的是输入数据的维度

@seiriosPlus
Copy link
Contributor

@freefreesea
Copy link
Author

我的意思是 这个IMDB的数据读进来,明明维度是文字长度,并不是1,为什么可以这么表示呢?我查了imdb的reader,读进来的数据明明是128维的,为什么不用[128]呢?

@freefreesea
Copy link
Author

是因为lstm网络的需要还是什么,现在卡在这里,很着急

@freefreesea
Copy link
Author

这个实例是 引用了imdb的数据集,利用RNN,LSTM模型进行了情感的分析,进行分类。但是在这一行,这个shape=1,文档并没有给出解释

@seiriosPlus
Copy link
Contributor

seiriosPlus commented Sep 9, 2019

这行代码是预测相关的输入代码, 可以结合后2行来一起看:

data = fluid.layers.data(
        name="words", shape=[1], dtype="int64", lod_level=1)
emb = fluid.layers.embedding(
        input=data, size=[input_dim, emb_dim], is_sparse=True)

通过变长的词Id得到低维映射的词向量, 既输入是 词的 ID序列。

@freefreesea
Copy link
Author

([5146, 43, 71, 6, 1092, 14, 0, 878, 130, 151, 5146, 18, 281, 747, 0, 5146, 3, 5146, 2165, 37, 5146, 46, 5, 71, 4089, 377, 162, 46, 5, 32, 1287, 300, 35, 203, 2136, 565, 14, 2, 253, 26, 146, 61, 372, 1, 615, 5146, 5, 30, 0, 50, 3290, 6, 2148, 14, 0, 5146, 11, 17, 451, 24, 4, 127, 10, 0, 878, 130, 43, 2, 50, 5146, 751, 5146, 5, 2, 221, 3727, 6, 9, 1167, 373, 9, 5, 5146, 7, 5, 1343, 13, 2, 5146, 1, 250, 7, 98, 4270, 56, 2316, 0, 928, 11, 11, 9, 16, 5, 5146, 5146, 6, 50, 69, 27, 280, 27, 108, 1045, 0, 2633, 4177, 3180, 17, 1675, 1, 2571], 0)

@freefreesea
Copy link
Author

这是从reader中读取的第一组数据,id序列是指什么意思,为什么是1,还是没听懂- -

@freefreesea
Copy link
Author

我理解中转化成id序列之后,一个样本的shape不应该是这些id的数量嘛

@freefreesea
Copy link
Author

不知道哪理解错了,求大佬指点啊

@seiriosPlus
Copy link
Contributor

shape=1 表示, 输入的纬度就是1维的, lod_level=1 表示, 这是一个1维的变长序列。

将这个1维的变长序列输入到 embedding layer后得到这些id对应的 size=[batch_size, emb_dim]的词向量。

@freefreesea
Copy link
Author

明白了,谢谢大佬

@freefreesea
Copy link
Author

您好,还想请教您一个问题 我基于这个代码改了一个reader,读入了我本地的数据,数据是40万条,在test阶段会报错 Assertion label >= 0 && label < feature_size_ failed (The label is out of the range. 5 但是我假如把40万条数据中的前100条数据拿出来,就不会报错

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants