Coggle 30 Days of ML(23年7月)任务七:训练TextCNN模型

简介: Coggle 30 Days of ML(23年7月)任务七:训练TextCNN模型

Coggle 30 Days of ML(23年7月)任务七:训练TextCNN模型

任务七:使用Word2Vec词向量,搭建TextCNN模型进行训练和预测


说明:在这个任务中,你将使用Word2Vec词向量,搭建TextCNN模型进行文本分类的训练和预测,通过卷积神经网络来进行文本分类。

实践步骤:

准备Word2Vec词向量模型和相应的训练数据集。

构建TextCNN模型,包括卷积层、池化层、全连接层等。

将Word2Vec词向量应用到模型中,作为词特征的输入。

使用训练数据集对TextCNN模型进行训练。

使用训练好的TextCNN模型对测试数据集进行预测


导入训练好的Word2Vec模型

由于上一部分我们已经训练好了我们的模型,所以这一部分我们直接导入即可

# 准备Word2Vec词向量模型和训练数据集
word2vec_model = Word2Vec.load("word2vec.model")



在数据分析的时候,我们已经发现,词语的数量是不一的,所以首先我们先对数据进行处理,将文本序列转化为词向量表示,并且填充为长度为200

# 获取Word2Vec词向量的维度
embedding_dim = word2vec_model.vector_size
# 转换训练数据集的文本序列为词向量表示,并进行填充
train_sequences = []
for text in train_data:
    sequence = [word2vec_model.wv[word] for word in text if word in word2vec_model.wv]
    padded_sequence = pad_sequences([sequence], maxlen=max_length, padding='post', truncating='post')[0]
    train_sequences.append(padded_sequence)
# 转换测试数据集的文本序列为词向量表示,并进行填充
test_sequences = []
for text in test_data:
    sequence = [word2vec_model.wv[word] for word in text if word in word2vec_model.wv]
    padded_sequence = pad_sequences([sequence], maxlen=max_length, padding='post', truncating='post')[0]
    test_sequences.append(padded_sequence)


构建TextCNN模型

接下来我们就开始构建一下TextCNN模型,包括卷积层、池化层、全连接层等,这样我们就初步得到一个非常简单的模型了

# 构建TextCNN模型
model = tf.keras.Sequential()
model.add(layers.Conv1D(128, 5, activation='relu', input_shape=(max_length, embedding_dim)))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(num_classes, activation='softmax'))


训练模型

接下来我们就可以开始训练我们的模型了,这里使用了SGD优化器进行操作,在训练之前,我们还需要把训练数据集的标签转换为one-hot编码

# 设置优化器和学习率
optimizer = optimizers.SGD(learning_rate=0.1)  # 使用SGD优化器,并设置学习率为0.1
# 编译模型
model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
# 转换训练数据集的标签为one-hot编码
train_labels = tf.keras.utils.to_categorical(train_labels)
# 训练模型
model.fit(np.array(train_sequences), train_labels, epochs=5, batch_size=32)
Epoch 1/5
438/438 [==============================] - 5s 6ms/step - loss: 0.4385 - accuracy: 0.8454
Epoch 2/5
438/438 [==============================] - 2s 5ms/step - loss: 0.4309 - accuracy: 0.8454
Epoch 3/5
438/438 [==============================] - 3s 6ms/step - loss: 0.4308 - accuracy: 0.8454
Epoch 4/5
438/438 [==============================] - 2s 6ms/step - loss: 0.4307 - accuracy: 0.8454
Epoch 5/5
438/438 [==============================] - 2s 6ms/step - loss: 0.4309 - accuracy: 0.8454


可能是模型太简单了,所以可以看到,通过训练以后,准确率也没有较大的提升,还可以继续改进

预测与提交

最后使用训练好的TextCNN模型对测试数据集进行预测,得到csv数据以后进行提交

# 预测测试数据集的分类结果
predictions = model.predict(np.array(test_sequences))
predicted_labels = predictions.argmax(axis=1)
# 读取提交样例文件
submit = pd.read_csv('ChatGPT/sample_submit.csv')
submit = submit.sort_values(by='name')
# 将预测结果赋值给提交文件的label列
submit['label'] = predicted_labels
# 保存提交文件
submit.to_csv('ChatGPT/textcnn.csv', index=None)


总结

这个TextCNN模型太过于简单,所以以至于可能没有学习到很多的数据,接下来可以进行调参和设置合理的模型结构,以期得到更好的结果,再接再厉,加油!!!

相关文章
|
9月前
|
自然语言处理 测试技术 计算机视觉
ICLR 2024:Time-LLM:基于大语言模型的时间序列预测
【2月更文挑战第28天】ICLR 2024:Time-LLM:基于大语言模型的时间序列预测
1332 1
ICLR 2024:Time-LLM:基于大语言模型的时间序列预测
|
9月前
|
机器学习/深度学习 算法
Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测
Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测
Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测
|
9月前
|
机器学习/深度学习 自然语言处理 算法框架/工具
Coggle 30 Days of ML(23年7月)任务八:训练BILSTM模型
Coggle 30 Days of ML(23年7月)任务八:训练BILSTM模型
|
9月前
|
机器学习/深度学习 算法 数据可视化
Coggle 30 Days of ML(23年7月)任务四:线性模型训练与预测
Coggle 30 Days of ML(23年7月)任务四:线性模型训练与预测
Coggle 30 Days of ML(23年7月)任务十:使用Bert在比赛数据集中完成预训练
Coggle 30 Days of ML(23年7月)任务十:使用Bert在比赛数据集中完成预训练
|
9月前
|
机器学习/深度学习 自然语言处理 PyTorch
Coggle 30 Days of ML(23年7月)任务九:学会Bert基础,transformer库基础使用
Coggle 30 Days of ML(23年7月)任务九:学会Bert基础,transformer库基础使用
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Coggle 30 Days of ML 打卡任务三:苹果病害模型训练与预测
Coggle 30 Days of ML 打卡任务三:苹果病害模型训练与预测
|
9月前
|
机器学习/深度学习 自然语言处理 算法
Coggle 30 Days of ML(23年7月)任务六:训练FastText、Word2Vec词向量
Coggle 30 Days of ML(23年7月)任务六:训练FastText、Word2Vec词向量
|
机器学习/深度学习 数据采集 算法
机器学习之PyTorch和Scikit-Learn第2章 为分类训练简单机器学习算法Part 2
前一节中,我们学习了Rosenblatt感知机规则的原理,下面使用Python进行实现并使用第1章 赋予计算机学习数据的能力中介绍的鸢尾花数据集进行训练。
377 0
机器学习之PyTorch和Scikit-Learn第2章 为分类训练简单机器学习算法Part 2
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】3. 基于pytorch手动实现一个线性回归模型并进行min--batch训练
【从零开始学习深度学习】3. 基于pytorch手动实现一个线性回归模型并进行min--batch训练
【从零开始学习深度学习】3. 基于pytorch手动实现一个线性回归模型并进行min--batch训练

热门文章

最新文章