Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

对于pad_seq = pad_sequences(data.tokenindex, maxlen=pad_seq_len, value=0.)这一步函数 我在运行的时候为了补全将数据中不足的 pad_seq 词语长度的 doc 补齐至 pad_seq 长度时出现错误。 #13

Closed
daneren opened this issue Apr 13, 2019 · 3 comments

Comments

@daneren
Copy link

daneren commented Apr 13, 2019

对于pad_seq = pad_sequences(data.tokenindex, maxlen=pad_seq_len, value=0.)这一步函数
我在运行的时候为了补全将数据中不足的 pad_seq 词语长度的 doc 补齐至 pad_seq 长度。但是
在图中
image

   if padding == 'post':
        x[idx, :len(trunc)] = trunc

的这一步时,由于原本的x数组为int类型,我的数据里面是str类型的会出现错误
File "/usr/local/lib/python3.7/site-packages/tflearn/data_utils.py", line 92, in pad_sequences
x[idx, :len(trunc)] = trunc
ValueError: invalid literal for int() with base 10: '公诉'

@daneren
Copy link
Author

daneren commented Apr 13, 2019

我尝试修改一个补全与裁剪操作,但是在后面又遇到了相同的错误,所以我想请问一下这里是怎么会事,我感觉是可能是数据集合的原因。
# pad_seq = pad_sequences(data.tokenindex, maxlen=pad_seq_len, value=0.)
pad_seq = []
temp = ["" for x in range(pad_seq_len)]
for idx, s in enumerate(data.tokenindex):
if len(s) > pad_seq_len:
pad_seq.append(s[:pad_seq_len])
else:
pad_seq.append(s + temp[:pad_seq_len - len(s)])
onehot_labels = data.onehot_labels
return pad_seq, onehot_labels

@RandolphVI
Copy link
Owner

@daneren
在使用 pad_sequences() 函数之前,数据中的 str 类型的文本粉刺是已经通过 data_word2vec() 中的 _token_to_index() 函数进行转换得到了对应的 int 类型的 index 数据了。

关于数据集合的样式,可以参考另一篇 issue 我的回答,我就不在此重复回答了。

@daneren
Copy link
Author

daneren commented Apr 13, 2019

好的重新看了一下,跑通了,谢谢大佬。
加上了_token_to_index()这个函数就对了
image

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

No branches or pull requests

2 participants