(防止内存错误)如何使用Tokenize类将一个热编码单词列表添加到Keras中的INTEGER 8矩阵中

时间:2018-03-13 18:21:56

标签: python text keras nltk tokenize

AS FLOAT64需要更多内存,这是标记化矩阵的默认数据类型,我希望它在INT8中,从而节省空间。

link to documentation

这是我说话的方法,

texts_to_matrix(texts):
Return: numpy array of shape (len(texts), num_words).
Arguments:
    texts: list of texts to vectorize.
    mode: one of "binary", "count", "tfidf", "freq" (default: "binary").

1 个答案:

答案 0 :(得分:1)

查看源代码,使用np.zeros()创建结果矩阵here,不使用dtype关键字参数,这将导致dtype设置为默认值在function definition中设置float。我认为选择这种数据类型是为了支持所有形式的转换,如tfidf,这会导致非整数输出。 所以我认为你必须选择:

<强> 1。更改源代码 您可以更改为texts_to_matrix的定义添加关键字参数,例如dtype,并将创建矩阵的the line更改为

x = np.zeros((len(sequences), num_words), dtype=dtype)

2.使用其他工具进行预处理: 您可以使用其他工具预处理文本,然后将其提供给keras网络。例如,您可以使用scikit learn&#39; s CountVectorizer,如:

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(dtype=np.int8, ...)
matrix = cv.fit_transform(texts).toarray()