Tensorflow2基础代码实战系列之CNN文本分类实战

news2024/11/20 7:18:13

深度学习框架Tensorflow2系列

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
这个系列主要和大家分享深度学习框架Tensorflow2的各种api,从基础开始。
#博学谷IT学习技术支持#


文章目录

  • 深度学习框架Tensorflow2系列
  • 前言
  • 一、文本分类任务实战
  • 二、数据集介绍
  • 三、CNN模型解读
  • 四、实战代码
    • 1.数据预处理
    • 2.定义模型
    • 3.模型训练
  • 总结


前言

通过CNN文本分类实战案例,学习Tensorflow2中一些API


一、文本分类任务实战

任务介绍:
数据集构建:影评数据集进行情感分析(分类任务)
词向量模型:加载训练好的词向量或者自己训练都可以
序列网络模型:训练RNN模型进行识别

二、数据集介绍

训练和测试集都是比较简单的电影评价数据集,标签为0和1的二分类,表示对电影的喜欢和不喜欢
在这里插入图片描述

三、CNN模型解读

在这里插入图片描述
通过不同尺度的卷积核[(2,3,4),word_dim] 来提取单词的特征,再进行max_pooling得到一个特征值,最后把所有尺度得到的特征值拼接在一起后,通过全连接进行分类。

四、实战代码

1.数据预处理

这里直接加载默认数据集,通过pad_sequences进行截断和填充操作
得到训练集和测试集大小都为(25000,300)
各25000个样本,每个样本长度为300
(25000, 300)
(25000, 300)

import warnings
warnings.filterwarnings("ignore")
import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.preprocessing.sequence import pad_sequences

num_features = 3000
sequence_length = 300
embedding_dimension = 100
(x_train, y_train), (x_test, y_test) = keras.datasets.imdb.load_data(num_words=num_features)
x_train = pad_sequences(x_train, maxlen=sequence_length)
x_test = pad_sequences(x_test, maxlen=sequence_length)
print(x_train.shape)
print(x_test.shape)
print(y_train.shape)
print(y_test.shape)

2.定义模型

# 多种卷积核,相当于单词数
filter_sizes=[3,4,5]
def convolution():
    inn = layers.Input(shape=(sequence_length, embedding_dimension, 1))#3维的
    cnns = []
    for size in filter_sizes:
        conv = layers.Conv2D(filters=64, kernel_size=(size, embedding_dimension),
                            strides=1, padding='valid', activation='relu')(inn)
        #需要将多种卷积后的特征图池化成一个特征
        pool = layers.MaxPool2D(pool_size=(sequence_length-size+1, 1), padding='valid')(conv)
        cnns.append(pool)
    # 将得到的特征拼接在一起
    outt = layers.concatenate(cnns)

    model = keras.Model(inputs=inn, outputs=outt)
    return model

def cnn_mulfilter():
    model = keras.Sequential([
        layers.Embedding(input_dim=num_features, output_dim=embedding_dimension,
                        input_length=sequence_length),
        layers.Reshape((sequence_length, embedding_dimension, 1)),
        convolution(),
        layers.Flatten(),
        layers.Dense(10, activation='relu'),
        layers.Dropout(0.2),
        layers.Dense(1, activation='sigmoid')

    ])
    model.compile(optimizer=keras.optimizers.Adam(),
                 loss=keras.losses.BinaryCrossentropy(),
                 metrics=['accuracy'])
    return model

model = cnn_mulfilter()
model.summary()

在这里插入图片描述
得到的模型结构如上图,其中192来自3种不同卷积核通过max_pooling之后相加得到的结果(64*3=192),每种卷积卷积之后得到一个向量,通过max_pooling之后得到一个特征值,每种卷积核设置filters=64所有最终一个卷积核得到64个值。

3.模型训练

deom级别测试代码

history = model.fit(x_train, y_train, batch_size=64, epochs=5, validation_split=0.1)
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.legend(['training', 'valiation'], loc='upper left')
plt.show()

总结

通过CNN文本分类任务代码案例实战,学习Tensorflow2的各种api。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dubbo源码篇08---依赖注入和AOP在Dubbo中的实现

Dubbo源码篇08---依赖注入和AOP在Dubbo中的实现 引言依赖注入使用实践 Wrapper机制使用实践注意 引言 前面三篇文章,我们从使用到原理,详细分析了一遍Dubbo SPI机制的实现原理: Dubbo源码篇05—SPI神秘的面纱—使用篇Dubbo源码篇06—SPI神秘的面纱—原…

STM8、STM8S003F3P6 双串口通信(IO模拟串口)

背景 这里为什么要写串口通信,因为实际项目上使用了串口,STM8S003F3P6的串口简单啊,不值得一提。本文写的串口确实简单,因为这里我想先从简单的写起来,慢慢的把难的引出来。这里呢,做个提纲说明&#xff0c…

VB一款实现图像浏览的ActiveX控件

利用GDI实现浏览图片的ActiveX控件,功能:支持读取PNG格式的图片,支持鼠标飞轮对图片进行缩放,镜像,移动等功能,其中用到了功能强大的GDI,GDI,对初及vb编程爱好者运用GDI-API有很大的研究价值&am…

超级简单的SSM框架(全注解,源码+分析,看一眼就会)

1.什么是SSM? SSM是Spring、SpringMVC、Mybatis的框架整合。 2.什么是Spring? Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 优点: 1.通过Spring的IOC特性,将对象之间的…

基于关系抽取的相似度计算

文章目录 一、面向冶金设备运维履历的知识图谱构建与语义相似性度量研究二、KG中的实体相似度计算研究研究假设研究方法第一步:特征生成第二步:模型选择 三、基于司法案例知识图谱的类案推荐个人解惑 一、面向冶金设备运维履历的知识图谱构建与语义相似性…

叮咚买菜业绩大幅低于预期,2023年前景堪忧

来源l:猛兽财经 作者:猛兽财经 叮咚买菜2023年第一季度业绩低于预期 叮咚买菜(DDL)于5月12日公布了2023年第一季度财报。 财报显示,叮咚买菜的收入同比下降了-8%,从2022年第一季度的54.44亿元人民币下滑…

搭建Stm32遇到的问题汇总

问题一:右侧watch窗口无法显示数据动态变化 现象:在main循环中加入累加的数值都不变化 现象2:单步执行卡在如下函数 原因:一般是因为没有用微库进入半主机模式 解决措施: 措施一:打开勾选下面的。 措施二…

【HTTP】

目录 🎨1. HTTP 请求 🏰1.1 首行 👑1.2 URL 🚩1.3 Content-Type 和 Content-Length 🍊1.4 User-Agent 🌽1.5 Referer ⚽1.6 Cookie 🍩2. HTTP 响应 🌞2.1 HTTP 响应 首行…

软件工程学习1:软件项目项目管理

假设你被指派作为一个软件公司的项目负责人,任务是开发一个管理系统,人员规模大约为8人,人员角色应如何确定?应如何进行项目管理?(从软件项目管理估算、软件规模、工作量估算、进度计划安排、软件过程模型等…

入行4年,跳槽2次,我好像摸透了软件测试这一行!

很多测试人在行业中摸爬滚打了很多年,时不时给身边新入职的伙伴们一些好的建议,对一部分刚入职起步的测试小白来说,这些建议都是让你少走弯路的捷径,废话不多说,让我们来了解一下,一位入行4年跳槽2次的老测…

JSONException: illegal identifier : \pos 1 异常报错问题

JSONException: illegal identifier : \pos 1 异常报错问题 1.常见情况:1.1 JSON 字符串格式不正确1.2 JSON 字符串中包含了非法字符1.3 解析 JSON 字符串的方式不正确 2.解决办法:2.1 工具类2.2 StringEscapeUtils.unescapeJava3. JSONObject.parseObje…

黑客入门教程从零基础入门到精通,看完这一篇就够了

学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解决…

Revit建模|怎么创建轴网标高?

大家好,这里是建模助手,今天给大家讲一讲怎么创建轴网标高。 标高用来定义楼层层高以及生成平面视图,轴网用于为构件定位,在Revit中轴网确定了一个不可见的工作平面,轴网编号以及标高符号样式均可定制修改。目前&…

每日练题---C语言

目录 前言: 一.求最小公倍数 1.1公式法 1.2遍历法 1.3乘除法 二.倒置字符串 前言: 今日份题目有:求两个整数的最小公倍数,求倒置字符串,。 一.求最小公倍数 牛客网链接:OJ链接 百度词条:…

Python自动化测试框架怎么搭建?完整框架源码给到你

目录 前言 搭建过程: 一阶段, 二阶段, 三阶段, 四阶段 下面具体的说一下搭建过程 一阶段: 二阶段: 三阶段: 四阶段 前言 背景:公司需要每一个项目组都搭建自己的一套自动…

Vue企业级项目开发思路,附带源码

项目的技术栈展示 以及项目的核心重点部分 项目搭建使用element实现首页布局 顶部导航菜单及与左侧导航联动的面包屑实现 封装一个ECharts组件 封装一个Form表单组件和Table表格组件 企业开发之权限管理思路讲解 项目搭建使用element实现首页布局 顶部导航菜单及与左侧导…

技术分享 | OB 慢查询排查思路

本文汇总了项目实践中前辈的经验和笔者的理解,旨在帮助初学 OceanBase(以下简称 OB)的工程师,快速解决 SQL 执行缓慢等性能问题。当遇到性能问题时,很多工程师可能会感到无从下手,本文将根据关键日志提供多…

14_Uboot图形化配置

目录 U-Boot图形化配置体验 make menuconfig过程分析 Kconfig语法简介 Mainmenu menu/endmenu条目 config条目 depends on和select choice/endchoice Menuconfig Comment Source 添加自定义菜单 U-Boot图形化配置体验 uboot或Linux内核可以通过输入"make menu…

计算机组成原理-存储系统-外部存储虚拟存储器

目录 一、外部存储 1.1磁盘组成 1.2性能指标 1.3磁盘地址 1.4硬盘的工作原理 1.5磁盘阵列 二、 固态硬盘SSD 三、虚拟存储器(存储系统详细知识点) 3.1 页式存储器 逻辑地址-》主存(物理)地址 加入块表(TLB)的转换过程 3.2 段式存储器 3.3 段页式存储器 一、外部存储 又称…

一个非系统工程师所关心的——Android开机流程

一、Loader层 1. Boot ROM: 上电后,BootRom会被激活,引导芯片代码开始从预定义的地方(固化在ROM)开始执行,然后加载引导程序到RAM。 2. Boot Loader引导程序 Android是基于Linux系统的,它没有BIO…