上海网站备案在哪里查询,网站建设哪家稳妥,天宁网站建设制作,wordpress模板是什么前言
实现步骤 1.安装tensorflow2.导入所需要的tensorflow库和其它相关模块3.设置随机种子4.定义模型相关超参数5.加载需要的数据集6.对加载的文本内容进行填充和截断7.构建自己模型8.训练构建的模型9.评估完成的模型 CNN#xff08;卷积神经网络#xff09;在文本分类任务中…前言
实现步骤 1.安装tensorflow2.导入所需要的tensorflow库和其它相关模块3.设置随机种子4.定义模型相关超参数5.加载需要的数据集6.对加载的文本内容进行填充和截断7.构建自己模型8.训练构建的模型9.评估完成的模型 CNN卷积神经网络在文本分类任务中具有良好的特征提取能力、位置不变性、参数共享和处理大规模数据的优势能够有效地学习文本的局部和全局特征提高模型性能和泛化能力所以本文将以CNN实现文本分类。 CNN对文本分类的支持主要提现在 特征提取CNN能够有效地提取文本中的局部特征。卷积层通过应用多个卷积核来捕获不同大小的n-gram特征从而能够识别关键词、短语和句子结构等重要信息。 位置不变性对于文本分类任务特征的位置通常是不重要的。CNN中的池化层如全局最大池化能够保留特征的最显著信息同时忽略其具体位置这对于处理可变长度的文本输入非常有帮助。 参数共享CNN中的卷积核在整个输入上共享参数这意味着相同的特征可以在不同位置进行识别。这种参数共享能够极大地减少模型的参数量降低过拟合的风险并加快模型的训练速度。 处理大规模数据CNN可以高效地处理大规模的文本数据。由于卷积和池化操作的局部性质CNN在处理文本序列时具有较小的计算复杂度和内存消耗使得它能够适应大规模的文本分类任务。 上下文建模通过使用多个卷积核和不同的大小CNN可以捕捉不同尺度的上下文信息。这有助于提高模型对文本的理解能力并能够捕捉更长范围的依赖关系。 实现步骤之前首先安装完成tensorflow 使用这个代码安装的前提是你的深度学习已经环境存在例如conda、pytorch、cuda、cudnn等环境 conda create -n tf python3.8
conda activate tf
#tensorflow的安装
pip install tensorflow-gpu -i https://pypi.douban.com/simple一. 测试tensorflow是否安装成功 有三种方法 方法一
import tensorflow as tf
print(tf.__version__)
#输出2.0.0-alpha0
print(tf.test.is_gpu_available())
#会输出True,则证明安装成功
#新版本的tf把tf.test.is_gpu_available()换成如下命令
import tensorflow as tf
tf.config.list_physical_devices(GPU)方法二 import tensorflow as tf
with tf.device(/GPU:0):a tf.constant(3)方法三 #输入python进入python环境
import tensorflow as tf
#查看tensorflow版本
print(tf.__version__)
#输出2.0.0-alpha0
#测试GPU能否调用,先查看显卡使用情况
import os
os.system(nvidia-smi)
#调用显卡
tf.function
def f():pass
f()
#这时会打印好多日志
#再次查询显卡
os.system(nvidia-smi)
可以对比两次使用情况二、打开pycharm倒入你创建的tf环境新建py文件开始构建代码 1.导入所需的库和模块
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Embedding, Conv1D, GlobalMaxPooling1D其中提前安装TensorFlow来用于构建和训练模型以及Keras中的各种层和模型类
2.设置随机种子
np.random.seed(42)在CNN卷积神经网络中设置随机种子主要是为了保证实验的可重复性。由于深度学习模型中涉及大量的随机性如权重的初始化、数据的打乱shuffle等设置随机种子可以使得每次实验的随机过程都保持一致从而使得实验结果可以复现
3.定义模型超参数
max_features 5000 # 词汇表大小
max_length 100 # 文本最大长度
embedding_dims 50 # 词嵌入维度
filters 250 # 卷积核数量
kernel_size 3 # 卷积核大小
hidden_dims 250 # 全连接层神经元数量
batch_size 32 # 批处理大小
epochs 5 # 训练迭代次数超参数影响模型的结构和训练过程,可自行调整。
4.加载数据集
(x_train, y_train), (x_test, y_test) tf.keras.datasets.imdb.load_data(num_wordsmax_features)示例中使用的IMDB电影评论数据集其中包含以数字表示的评论文本和相应的情感标签正面或负面,使用tf.keras.datasets.imdb.load_data函数可以方便地加载数据集并指定num_words参数来限制词汇表的大小。
5.对文本进行填充和截断
x_train sequence.pad_sequences(x_train, maxlenmax_length)
x_test sequence.pad_sequences(x_test, maxlenmax_length)由于每条评论的长度可能不同需要将它们统一到相同的长度。sequence.pad_sequences函数用于在文本序列前后进行填充或截断使它们具有相同的长度。
6.构建模型
model Sequential()
model.add(Embedding(max_features, embedding_dims, input_lengthmax_length))
model.add(Dropout(0.2))
model.add(Conv1D(filters, kernel_size, paddingvalid, activationrelu, strides1))
model.add(GlobalMaxPooling1D())
model.add(Dense(hidden_dims, activationrelu))
model.add(Dropout(0.2))
model.add(Dense(1, activationsigmoid))这个模型使用Sequential模型类构建依次添加了嵌入层Embedding、卷积层Conv1D、全局最大池化层GlobalMaxPooling1D和两个全连接层Dense。嵌入层将输入的整数序列转换为固定维度的词嵌入表示卷积层通过应用多个卷积核来提取特征全局最大池化层获取每个特征通道的最大值而两个全连接层用于分类任务。
7.编译模型
model.compile(lossbinary_crossentropy, optimizeradam, metrics[accuracy])在编译模型之前需要指定损失函数、优化器和评估指标。使用二元交叉熵作为损失函数Adam优化器进行参数优化并使用准确率作为评估指标。
8.训练模型
model.fit(x_train, y_train, batch_sizebatch_size, epochsepochs, validation_data(x_test, y_test))使用fit函数对模型进行训练。需要传入训练数据、标签批处理大小、训练迭代次数并可以指定验证集进行模型性能评估。
9.评估模型
scores model.evaluate(x_test, y_test, verbose0)
print(Test accuracy:, scores[1])使用evaluate函数评估模型在测试集上的性能计算并打印出测试准确率。
完整代码
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Embedding, Conv1D, GlobalMaxPooling1D# 设置随机种子
np.random.seed(42)# 定义模型超参数
max_features 5000 # 词汇表大小
max_length 100 # 文本最大长度
embedding_dims 50 # 词嵌入维度
filters 250 # 卷积核数量
kernel_size 3 # 卷积核大小
hidden_dims 250 # 全连接层神经元数量
batch_size 32 # 批处理大小
epochs 5 # 训练迭代次数# 加载数据集
(x_train, y_train), (x_test, y_test) tf.keras.datasets.imdb.load_data(num_wordsmax_features)# 对文本进行填充和截断使其具有相同的长度
x_train sequence.pad_sequences(x_train, maxlenmax_length)
x_test sequence.pad_sequences(x_test, maxlenmax_length)# 构建模型
model Sequential()
model.add(Embedding(max_features, embedding_dims, input_lengthmax_length))
model.add(Dropout(0.2))
model.add(Conv1D(filters, kernel_size, paddingvalid, activationrelu, strides1))
model.add(GlobalMaxPooling1D())
model.add(Dense(hidden_dims, activationrelu))
model.add(Dropout(0.2))
model.add(Dense(1, activationsigmoid))# 编译模型
model.compile(lossbinary_crossentropy, optimizeradam, metrics[accuracy])# 训练模型
model.fit(x_train, y_train, batch_sizebatch_size, epochsepochs, validation_data(x_test, y_test))# 评估模型
scores model.evaluate(x_test, y_test, verbose0)
print(Test accuracy:, scores[1])