文本分类时调试CNN模型遇到的问题
1.查看TensorFlow、Keras的版本
import tensorflow as tftf.__version__# '2.6.0'import keraskeras.__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')) #在前面补0print(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_indexprint('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 是为了对立句子中元素的数量相等,也就是每一个行向量的长度是雷同的。
输入: