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

相关文章
|
7月前
|
存储 机器学习/深度学习 人工智能
基于Megatron-Core的稀疏大模型训练工具:阿里云MoE大模型最佳实践
随着大模型技术的不断发展,模型结构和参数量级快速演化。大模型技术的应用层出不穷。大模型展现惊人效果,但训练和推理成本高,一直是巨大挑战。模型稀疏化能降低计算和存储消耗。近期以Mixtral为代表的MoE(多专家混合)大模型证明了稀疏MoE技术能大幅降低计算量、提升推理速度,模型效果甚至超过同规模稠密模型。阿里云PAI和NVIDIA团队深入合作,基于Megatron-Core MoE框架,解决了MoE大模型训练落地时会遇到的可拓展性、易用性、功能性以及收敛精度等核心问题,在下游任务上取得了很好的模型效果。
|
7月前
|
机器学习/深度学习 算法
Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测
Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测
Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测
|
7月前
|
机器学习/深度学习 自然语言处理 算法框架/工具
Coggle 30 Days of ML(23年7月)任务八:训练BILSTM模型
Coggle 30 Days of ML(23年7月)任务八:训练BILSTM模型
Coggle 30 Days of ML(23年7月)任务十:使用Bert在比赛数据集中完成预训练
Coggle 30 Days of ML(23年7月)任务十:使用Bert在比赛数据集中完成预训练
|
7月前
|
机器学习/深度学习 算法 数据可视化
Coggle 30 Days of ML(23年7月)任务四:线性模型训练与预测
Coggle 30 Days of ML(23年7月)任务四:线性模型训练与预测
|
7月前
|
机器学习/深度学习 自然语言处理 PyTorch
Coggle 30 Days of ML(23年7月)任务九:学会Bert基础,transformer库基础使用
Coggle 30 Days of ML(23年7月)任务九:学会Bert基础,transformer库基础使用
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Coggle 30 Days of ML 打卡任务三:苹果病害模型训练与预测
Coggle 30 Days of ML 打卡任务三:苹果病害模型训练与预测
|
7月前
|
机器学习/深度学习 自然语言处理 算法
Coggle 30 Days of ML(23年7月)任务六:训练FastText、Word2Vec词向量
Coggle 30 Days of ML(23年7月)任务六:训练FastText、Word2Vec词向量
|
机器学习/深度学习 人工智能 数据可视化
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
|
机器学习/深度学习 Python
【ML】什么是判别模型和生成模型
什么是判别模型和生成模型,请阅读下文
【ML】什么是判别模型和生成模型

热门文章

最新文章