文本分类时调试CNN模型遇到的问题

文本分类时调试CNN模型遇到的问题

1.查看TensorFlow、Keras的版本

import tensorflow as tf

tf.__version__
# '2.6.0'
import keras

keras.__version__
'2.6.0'

2.导入to_categorical()时出现错误

关于如何正确导入 to_categorical的内容,请参考链接: https://qa.1r1g.com/sf/ask/2904623781/

from tensorflow.keras.utils import to_categorical
'''
将整型的类别标签转为onehot编码。y为int数组,num_classes为标签类别总数,大于max(y)(标签从0开始的)。

返回:如果num_classes=None,返回len(y) * [max(y)+1](维度,m*n表示m行n列矩阵,下同),否则为len(y) * num_classes。
'''
y_train = np.asarray(all_labels)

labels = to_categorical(y_train)

3.使用Tokenizer()生成字典及对应的文本序列,进一步转换为pad_sequences

from keras.preprocessing.sequence import pad_sequences
'''
sequences:浮点数或整数构成的两层嵌套列表
maxlen:None或整数,为序列的最大长度。大于此长度的序列将被截短,小于此长度的序列将在前部填0.
dtype:返回的numpy array的数据类型
padding:‘pre’或‘post’,确定当需要补0时,在序列的起始还是结尾补`
truncating:‘pre’或‘post’,确定当需要截断序列时,从起始还是结尾截断
value:浮点数,此值将在填充时代替默认的填充值0
'''
print(pad_sequences(tokened))

print(pad_sequences(tokened,8))         #固定长度

print(pad_sequences(tokened,8,padding = 'post'))        #在后面补0

print(pad_sequences(tokened,8,padding = 'post',truncating = 'pre', value = -1))        #截断并将默认填充值0改为-1        #
tokenizer = Tokenizer()

tokenizer.fit_on_texts(all_texts)

sequences = tokenizer.texts_to_sequences(all_texts)

word_index = tokenizer.word_index

print('Found %s unique tokens.' % len(word_index))        #字典的unique长度

data = pad_sequences(sequences, maxlen=MAX_SEQUENCE_LENGTH)        #生成句子的二维序列[[1,2,3],[4,5,6],[7,8,9]]

print(data)

data.shape  #193行数据,生成序列的最大长度是100,Tokenizer的sequence转换为pad_sequence 是为了统一句子中元素的数量相等,也就是每一个行向量的长度是相同的。

data = pad_sequences(sequences, maxlen=MAX_SEQUENCE_LENGTH)        #生成句子的二维序列[[1,2,3],[4,5,6],[7,8,9]]

print(data)

data.shape  #193行数据,生成序列的最大长度是100,Tokenizer的sequence转换为pad_sequence 是为了统一句子中元素的数量相等,也就是每一个行向量的长度是相同的。

输出:文本分类时调试CNN模型遇到的问题_第1张图片

你可能感兴趣的:(文本分类时调试CNN模型遇到的问题)