IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Keras中用验证集进行模型验证的方法_(validation_datavalidation_splitmodel.evaluate) -> 正文阅读

[人工智能]Keras中用验证集进行模型验证的方法_(validation_datavalidation_splitmodel.evaluate)

目标

在训练完网络模型后,我们想要知道模型对数据的真实准确度,而训练数据存在则数据信息泄露的问题,所以我们现在需要一个独立的数据验证集来对模型泛化能力进行验证。

Keras中常用于模型评估的方法参数包含:validation_split、validation_data、model.evaluate(...)

一、自动切分验证集用于验证

在Keras中,可以从数据集中切分出一部分作为验证集,并且在每次迭代(epoch)时在验证集中评估模型的性能.具体地,调用model.fit()训练模型时,可通过validation_split参数来指定从数据集中切分出验证集的比例.

validation_split: 0~1之间的浮点数,用来指定训练集的一定比例数据作为验证集。验证集将不参与训练,并在每个epoch结束后测试的模型的指标,如损失函数、精确度等。

history = model.fit(trainx, trainy, callbacks=[earlyStop], epochs=300, batch_size=batch_size, validation_split=0.2, verbose=1, shuffle=True) 

注意,validation_split的划分在shuffle之前,因此如果你的数据本身是有序的,需要先手工打乱再指定validation_split,否则可能会出现验证集样本不均匀。?

二、手动切分验证集用于验证

Keras允许在训练模型的时候手动指定验证集.

validation_data:可人为的将数据集进行切分,然后在keras的model.fit()的时候通过validation_data参数指定前面切分出来的验证集。用validation_data=(testx, testy)形式的参数赋值给fit函数即可。

history = model.fit(trainx, trainy, callbacks=[earlyStop], epochs=300, batch_size=batch_size, validation_data=(testx, testy), verbose=1, shuffle=True) 

fit函数中不论是设置了validation_split还是validation_data,这部分用于validation的数据并不会被用来调整参数,不会被用于更新权重。不然的话观测到的效果就不真实了,就像是拿test data来做training一样,会过拟合。如果同时设置validation_split和validation_data两个参数,则validation_data会覆盖validation_split.

对于validation data来说,主要就是为了防止过拟合。比如说在训练过程中,查看模型在validation data上的accuracy,如果训练了10轮,发现accuracy都没提高,我们就可以及时停止训练,这个技巧被称为Early stopping,可以防止模型过度训练。
相关链接:keras中EarlyStopping(早停止)的用法和原理详解_日拱一卒-CSDN博客

?在训练模型中加入验证集之后,没训练完一个轮次后,就会多输出一部分验证集的数据信息,如下图:???????

?

三、使用model.evaluate验证模型准确度

输入数据和标签,输出损失和精确度.

scores = model.evaluate(testx, testy, verbose=1)
print(model.metrics_names)
print('test loss',scores[0])
print('test accuracy',scores[1])

model.evaluate(...) 的输出结果如下:

[0.6255261898040771, 0.75]

数组中这两个值分别是什么意思,我们可以用print(model.metrics_names)来观察一下,打印出的结果如下:

['loss', 'accuracy']

因此可知evaluate的输出结果是验证集的损失值和准确率。

?

四、model.predict

在对模型使用验证集测试过之后,就可以开始用模型正式预测了

model.predict(testx, verbose=0)

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:11:31  更:2022-03-11 22:13:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:51:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码