TensorFlow之分类模型-1

news2024/11/15 12:18:49

1 基本概念

机器学习

机器学习是指一段程序或者和一个系统从输入数据中训练一个模型。完成训练的模型可以对全新的数据进行预测,其中,新数据的分布是与被训练数据的分布保持一致。

训练

一个确定组成模型的实际参数的过程,这些参数包括权重以及偏差。在训练的过程中,一个系统读取用于训练的数据样本并且逐渐地调整这些参数,在多次重复训练的过程中,不断地调整这些参数的准确度。

参数

在训练过程中,一个模型学习到的权重偏差,例如,在线性回归模型(在后续章节中详细描述)中,参数是由偏差(b)以及所有权重(w1、w2…)组成,公式如下所示:

超级参数

由用户指定的一个常量,用于控制模型训练的可持续运行。例如,学习速率是一个超级参数,在一个训练会话开始之前可以设置为0.01,用户可以根据实际情况增加或者降低该值。

模型

通常情况下,模型是指一个数学结构,该数学结构接受输入的数据以及返回输出的数据,而在计算机领域,模型是指一个系统使用参数集以及结构对输入的数据作出预测与分析。例如,在监督型机器学习中,一个模型使用样本数据作为输入,从而推断一个预测作为输出,如下所示列举一些模型:

  • 线性回归模型包括一个权重集以及一个偏差

  • 一个神经网络,包括一个隐藏层集,每个隐藏层内包括一个或者多个神经元,而每个神经元都与一个权重集以及一个偏差相关

  • 一个决策树,由一个树形的结构组成,叶子节点与条件节点相互连接,根据输入的条件做出合适的决策

从软件工程的角度看,模型可保存、可重用、可分发。

非监督型机器学习也产生模型,其模型一般对应一个函数,该函数使用输入的数据样本进行聚簇处理。

一个代数函数的模型如下所示:

如上所示,代数模型输入一个元组(x,y),计算一个输出。

同样,一个程序的函数也是一个模型,如下所示:

如上所示,调用者输入二元组(x,y)作为参数,函数计算一个输出。

虽然,一个深度神经网络模型与代数模型或者程序的函数模型是一个不同的数学结构,但是,深度神经网络模型也是接受输入,然后计算输出。其最大的不同是,深度神经网络使用机器学习的模式调整参逐渐数以达到更加准确的输出。

分类模型

一个用于预测分类的模型,如下所示是分类模型:

  •  一个模型,用于预测输入语句是什么语言

  • 一个模型,用于预测树的种类

  • 一个模型,用于预测医学上的阴性或者阳性

相对而言,回归模型(在后续章节中描述)是用于预测数值而不是分类。

两种常用的分类模型是:二元分类以及多元分类。

2 文本分类与情感分析

本章节主要从代码的角度以及文本数据的角度描述情感分析的处理过程,使用最新的TF技术框架(keras)对IMDB数据集执行二元分类的训练。

获取数据集

如上所示,首先,导入python的库文件,其中,包括图形库、系统读取文件库、字符串工具集、tensorflow技术框架库以及keras技术框架库。

如上所示,其中,url提供IMDB数据集的下载地址,该数据集包括观众对电影的观后感,观众对电影的正面以及负面的评价,因此,正面评价以及负面评价形成了情感分析的二元分类。dataset是根据url下载的数据集,dataset_dir是获取到的数据目录。

如上所示,listdir显示数据集所在目录的文件以及子目录列表。

如上所示,文件夹aclImdb/train/pos表示电影的正面评价,文件夹aclImdb/train/neg表示电影的负面评价。

加载数据集

使用keras技术框架的工具集text_dataset_from_directory加载数据集,然后转换成机器学习能识别的合适格式,该工具集方法参数需要的目录结构如下所示:

如上所示,目录结构格式包括两个子目录:class_a以及class_b,每个目录对应二元分类中一个分类的数据集,每个分类数据集内包括数据样本的原文,该格式对应aclImdb数据集的目录结构的aclImdb/train/pos(正面评价)以及aclImdb/train/neg(负面评价)。

如前面所述,监督型机器学习的数据集包括两个部分,训练数据样本集以及每个数据样本对应的标签数据集,因此,aclImdb数据集对应的数据样本是train子目录,而数据样本对应的标签是labeledBow.feat文件。按照机器机器学习的训练过程,需要提供三个阶段的数据样本,其中包括训练数据集、验证数据集、测试数据集,而验证数据集是从训练数据集中以2比8的比例获取,测试数据集在aclImdb/test子目录中,数据分割的代码如下所示:

如上所示,在训练数据集中提供了25k的数据样本,提取其中的80%作为训练数据集(20k),剩余的20%数据集用于验证数据集(5k),根据之前的实验证明,top-20k的数据样本训练集是最适合的数据量。

如上所示,加载样本数据集完成,对应raw_train_ds,其中,Review表示电影评价原文,Label表示原文对应的情感分析的类别标签。

如上所示,显示raw_train_ds数据集的类别标签,标签0对应负面评价,标签1对应正面评价。

如上所示,从aclImdb原始数据集中创建验证数据集,该数据集用于机器学习的验证阶段。

如上所示,从aclImdb原始数据集中创建测试数据集,该数据集用于机器学习测试阶段。

训练数据集

Keras(tf.keras.layers.TextVectorization)技术框架支持对数据集进行原文规范化、对原文分词、原文向量化。其中,原文规范化是对原文的预处理,删除原文中的一些特殊符号或者标签(例如,HTML中的分行标签),其目的是简化原文。对原文分词是将规范化的原文按照空格间隔分割成单词集合。原文向量化是将原文分词所得的单词集合转换成神经网络能识别的数值。

如上所示,该函数提供原文规范化的功能,首先转换成小写字母、将HTML标签替换成空格、将标点符号替换成空格。

如上所示,以序列模型创建一个向量化的层,其中,max_features是最大的特征数,也就是单词词汇总数,sequence_length是根据词汇集索引化原文的最大序列长度,原文的单词数大于sequence_length长度的序列则丢弃。

如上所示,从训练数据集中获取原文集,然后,使用以上定义的向量化层对其进行序列向量化。

如上所示,自定义单元测试函数显示第一个原文的序列化向量集以及第一个原文对应的标签,其中,序列向量集的长度等于sequence_length。

如上所示,使用向量化层输出序列索引对应的单词,其中,单词词汇集的总数是10000。

如上所示,使用向量化文本函数分别对训练数据集、验证数据集、测试数据集执行序列向量化,后续使用这些序列化向量集进行机器学习。

(未完待续)

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

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

相关文章

Linux | 为什么要有线程?| 线程概念 | 线程控制 | 线程ID的实质

文章目录为什么要有线程?Linux对于线程的设计Linux线程特点总结Linux线程和进程的比较线程的优点线程的缺点Linux下线程的使用线程的创建与销毁线程退出的三种方式什么是线程ID?线程局部存储线程分离exit对于线程的影响为什么要有线程? 假设…

二手书籍交易网站毕业设计,二手书籍买卖平台毕设,二手书籍交易市场平台设计与实现毕业设计论文分析

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的校园二手书籍交易系统,整个网站项目使用了B/S架构,基于python的Django框架下开发;用户通过登录网站,查询二手交易商品,购买二手交易网…

分享107个竞聘述职PPT模板,总有一款适合您

链接:https://pan.baidu.com/s/1snFUpkECYjvFEk0d3kNHiw?pwd87pd 提取码:87pd 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。 个人工作述职报告ppt范文免费下载 年终竞…

密集计算场景下的 JNI 实战

在 Java 发展历程中,JNI 一直都是一个不可或缺的角色,但是在实际的项目开发中,JNI 这项技术应用的很少。在笔者经过艰难的踩坑之后,终于将 JNI 运用到了项目实战,本文笔者将简单介绍 JNI 技术,并介绍简单的…

Gateway之限流、熔断,Sentinel--服务容错

目录 高并发带来的问题 1.编写java代码 2.修改配置文件中tomcat的并发数 3.接下来使用压测工具,对请求进行压力测试 压测工具 服务雪崩效应 常见容错方案 常见的容错组件 Sentinel入门 什么是Sentinel Sentinel 具有以下特征: Sentinel 分为两个部分: sentinel简单模…

[附源码]Python计算机毕业设计Django小区物业管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

如何在 Windows 10 上启用和设置 BitLocker 加密

启用和设置 BitLocker 加密 通过控制面板启用 BitLocker通过命令提示符启用 BitLockerBitlocker 可以使用控制面板中的图形界面或在命令提示符中执行一些命令来启用。在 Windows 10 上启用 Bitlocker 非常简单,但用户通常更喜欢通过控制面板而不是命令提示符来管理 Bitlocker …

python数据类型(1)

关于Python的数据类型 Python数据类型包括: 数字类型,字符类型,布尔类型,空类型,列表类型,元组类型,字典类型 1、数字类型 包括:整型int 浮点型float(有小数位的都是是浮点型) 注…

目标检测常见数据增强算法汇总讲解(Mixup,Cutout,CutMix,Mosaic)

在学习目标检测算法的过程中,发现了一些有趣的目标检测算法,打算简单写个笔记,不足之处还望谅解,可以在评论中指出来。 目标检测作为需要大量数据的算法,在实际情况中经常面临数据不足的情况,事实上很多时候…

JavaScript同步与异步

JavaScript采用单线程模式工作的原因:JavaScript设计之初是为了能够运行在浏览器实现页面交互,而实现页面交互的核心是操作DOM,这种模式就决定了它使用单线程模式,否则就需要解决复杂的多线程同步的问题。 这种模式的优点就是更安…

Vue3中 子组件内v-model绑定props接收到参数时报错update:modelValue

开发过程中二次封装了一个搜索的组件,子组件内使用了el-select和el-input 参数分别对应父组件传入的selectValue和selectText参数 子组件内部change和input事件来同步触发组件中数据的修改 最终本地开发环境一切正常,部署到测试环境和生产环境后出现下…

[附源码]JAVA毕业设计仁爱公益网站(系统+LW)

[附源码]JAVA毕业设计仁爱公益网站(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

判断一份好的问卷有哪些标准?

问卷的主要由三个部分组成:问卷说明、问卷主题、问卷结束。而这三个部分又包含了很多因素,比如问卷主题、问卷标题、问卷题目、问卷调查对象等。制作问卷不仅仅是简单的问题罗列,然后进行发放。不同质量的调查问卷会反馈出不一样的效果&#…

Spring Cloud微服务之eureka+client入门

Spring Cloud微服务之eurekaclient入门 谈到服务,想到一种“懒人思维”。家政服务为懒人收拾家务提供一种便利,快餐服务为不爱做饭的懒人提供一种方便.....等等。 说到微服务,顾名思义,就是把服务再细微化。比如需要送女友一束花…

FastReport Desktop 2023Microsoft SQL存储过程的支持

FastReport Desktop 2023Microsoft SQL存储过程的支持 添加了用于从JasperReports转换报告的模板。 添加了对连接到Microsoft SQL存储过程的支持。 在RTF中,添加了一项设置,以提高打印时的图像质量。 添加了导出到Microsoft Excel 2007时从“货币”转换为…

Landsat数据下载

Landsat数据下载步骤0 Landsat数据介绍1 下载地址2 下载步骤2.1 检索数据2.1.1 设置地点,有多种方法2.1.2 选择时间范围2.1.3 在Data Sets界面选择传感器(卫星或者传感器的名称)2.2 限定云量2.3 下载数据这是个老生常谈的话题了,我…

[附源码]Python计算机毕业设计Django校园快递柜存取件系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

ubuntu上msquic带根证书的测试使用

ubuntu上msquic带根证书的测试使用 1.证书1.1 根证书的生成1.2 根证书的导入1.4 openssl验证书1.5 修改/etc/hosts2. msquic编译2.1 quic协议编译2.2 示例程序编3.本地测试1.证书 1.1 根证书的生成 假设我们的域名为: www.contoso.com 创建CA私钥 openssl ecparam -out cont…

java Object类 包装类

目录 Object 类的使用 操作符与equals方法  : equals() 重写equals()方法的原则 面试题 toString() 方法 包装类(Wrapper)的使用 基本类型、包装类与String类间的转换 包装类用法举例 总结 Object 类的使用  Object类是所有Java类的根父类  如果…

最新出炉的U-Net研究性综述:Medical Image Segmentation Review: The Success of U-Net

热乎的Medical Segmentation 综述1 文章介绍2 前言3 U-Net变型4 Skip Connection Enhancements4.1 Increasing the Number of Skip Connections4.2 Processing Feature Maps within the Skip Connections4.3 Combination of Encoder and Decoder Feature Maps5 Backbone Design…