赞
踩
先看数据的分布,是否符合正太分布,datas_lengths是数据长度的列表,分别存储每一个样本的数据长度
- num_tokens = np.array(data_lengths)
- plt.hist(np.log(num_tokens), bins = 100)
- plt.xlim((1,10))
- plt.ylabel('number of tokens')
- plt.xlabel('length of tokens')
- plt.title('Distribution of tokens length')
- plt.show()
显示数据柱状图:
这里用一个均值+2个标准差,可以覆盖到97%左右的数据。(正态分布的特性)
-
- max_tokens = np.mean(data_lengths) + 2 * np.std(data_lengths)
- max_tokens = int(max_tokens)
- max_tokens
使用pad_sequences(keras包提供的函数)截取和补齐数据
(长于max_tokens的数据进行截取,短于max_tokens的数据进行补0)
- from tensorflow.python.keras.preprocessing.sequence import pad_sequences
- train_pad = pad_sequences(x_data, maxlen=max_tokens,
- padding='pre', truncating='pre',dtype=float)
sequences
:浮点数或整数构成的两层嵌套列表maxlen
:None或整数,为序列的最大长度。大于此长度的序列将被截短,小于此长度的序列将在后部填0.dtype
:返回的numpy array的数据类型padding
:‘pre’或‘post’,确定当需要补0时,在序列的起始还是结尾补`truncating
:‘pre’或‘post’,确定当需要截断序列时,从起始还是结尾截断value
:浮点数,此值将在填充时代替默认的填充值参考:https://blog.csdn.net/wcy23580/article/details/84957471
https://keras-cn.readthedocs.io/en/latest/preprocessing/sequence/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。