精华内容
下载资源
问答
  • 主要介绍了浅谈keras使用中val_accacc值不同步的思考,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • loss、accval_loss、val_acc 分别表示训练集的准确度和损失值、以及验证集的准确度和损失值,注意是验证集的而不是测试集的。下面小小的总结一下具体的联系

    loss、acc ,val_loss、val_acc

    分别表示训练集的准确度和损失值、以及验证集的准确度和损失值,注意是验证集的而不是测试集的。下面小小的总结一下具体的联系

    首先我们要理解验证集的作用,它与测试集有什么不同。只有理解了这些基础,这些数据才真正的对我们来说有用。

    首先要明白验证集的最大作用是方便我们了解模型效率、调试超参数,测试集是可以没有的,但验证集是必须有的,如果验证集具有足够的泛化代表性,是可以不需要设置测试集的;注意测试集的存在只是为了验证我们在训练集和验证集上进行模型的超参和参数训练后,验证我们得到的模型是否具有泛化性能。

    训练集loss验证集loss含义解决方向
    不断下降不断下降模型网络任然在学习增加epoch
    不断下降趋于水平模型网络过拟合maxpool、正则化
    趋于水平不断下降数据集出现问题检查数据集以及其处理
    趋于水平趋于水平无法继续优化减小学习率等
    不断上升不断上升模型、超参数、数据集的出现问题处理这是最坏的情况,往往出现方向性错误

     

     

     

     

    展开全文
  • 一个选拔的故事(acc,loss,val_acc,val_loss的区别)

    万次阅读 多人点赞 2019-03-23 21:41:53
    以一个选拔考试的小故事类比神经网络选择模型的过程,以此方便的理解验证集的作用,区分开acc,loss和val_accval_loss。

    今天我们带了一群学生,要选拔他们中最好的一个出去比赛。

    我们把需要的知识教给他们,并且每次都会做一张随堂练习卷。多次下来,学生们的成绩都有所提高,并向满分越靠越近。

    但是有一些学生成绩好是因为理解了这些知识,有些同学考得好只是因为把上课教的东西都记下来了。比赛不可能只有学过的东西,肯定还会有很多没遇到过的题目,那我们要怎么判断这个学生是不是真的会呢?

    很简单,出一张全是新题的摸底卷。根据摸底卷的成绩选出最好的那名学生。想必这个学生在比赛中的成绩也是很稳定的。

    以上这个小故事的类比如下:
    学生-模型
    出去比赛-实际应用
    考试分数-acc
    学习的知识-训练集
    摸底卷-验证集
    比赛卷子-测试集

    所以其实这个故事是这样的
    今天我们训练了一些模型 带了一群学生,要选拔他们中最好的一个实际使用 出去比赛
    我们用训练集迭代优化参数把需要的知识教给他们 ,并且每轮迭代后都会得到一个acc,loss每次都会做一张随堂练习卷 。多次下来,acc将越来越高并趋向1学生们的成绩都有所提高,并向满分越靠越近
    但是有一些学生成绩好是因为理解了这些知识,有些同学考得好只是因为过拟合 把上课教的东西都记下来了 。比赛不可能只有学过的东西,肯定还会有很多没遇到过的题目,那我们要怎么判断这个学生是不是真的会呢?
    很简单,用验证集观察val_acc和val_loss 出一张全是新题的摸底卷 。根据摸底卷的成绩选出最好的那名学生。想必这个学生在比赛中的成绩也是很稳定的。

    比如我这里有针对同样数据集的32种模型(全连接层数,卷积层层数或者卷积层大小不同)
    我们先看训练集的情况(曲线光滑度是0,以下图片没特殊说明都是0)
    在这里插入图片描述
    除了最上方某位差生(没错,说的就是那位灰色同学),这个模型可能先天不足,其他的还是差不多的,准确率都是稳步上升

    如果我们把光滑度调成0.6,看上去还不错对吧
    在这里插入图片描述
    这些模型看上去都挺有模有样的。

    但是当我们看到验证集结果的时候:宛如群魔乱舞,这些同学都很暴躁,表现非常的参差不齐。
    在这里插入图片描述
    这时候我们就要选择验证集表现最好的那个模型,简单地说,就是val_acc越来越大最后趋于稳定,val_loss越来越小最后也趋于稳定。

    在这里一对模型中,我找到了一个模范优等生,就是2个卷积层,2个全连接层的时候,也就是下图墨绿色的线条。
    为了作为对比,我们拉上一个在总体里面表现也很好的另一个模型,即这根铁锈红的线。
    在这里插入图片描述

    没有对比就没有伤害,光滑度为0的时候这根墨绿色的线看上去就很不错了。

    参考:

    1.深度网络的过拟合问题讨论https://blog.csdn.net/mrgiovanni/article/details/52167016
    2.从Keras开始掌握深度学习-5 优化你的模型https://www.jianshu.com/p/6e50d6136892

    展开全文
  • 1. acc/loss,val_acc/val_loss是什么意思 val 代表 validation,所以,acc/loss代表训练集,val_acc/val_loss代表验证集。 2. 为什么在训练的时候我们已经有测试集还需要验证集? —来自知乎 ...

    1. acc/loss,val_acc/val_loss是什么意思
    val 代表 validation,所以,acc/loss代表训练集,val_acc/val_loss代表验证集。

    2. 为什么在训练的时候我们已经有测试集还需要验证集?
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    使用dropout等方法,可以缓解过拟合等现象,见下图。在这里插入图片描述
    —来自知乎

    展开全文
  • 在一个比较好的数据集中,比如在分辨不同文字的任务中,一下是几个样本 ...40/40 [==============================] - 23s 579ms/step - loss: 1.3896 - acc: 0.95 - val_loss: 1.3876 - val_acc: 0.95 Epoch 13/1...

    在一个比较好的数据集中,比如在分辨不同文字的任务中,一下是几个样本

    使用VGG19,vol_acc和acc基本是同步保持增长的,比如

    40/40 [==============================] - 23s 579ms/step - loss: 1.3896 - acc: 0.95 - val_loss: 1.3876 - val_acc: 0.95
    Epoch 13/15
    40/40 [==============================] - 23s 579ms/step - loss: 1.3829 - acc: 0.96 - val_loss: 1.3964 - val_acc: 0.96
    Epoch 14/15
    40/40 [==============================] - 23s 580ms/step - loss: 1.3844 - acc: 0.97 - val_loss: 1.3892 - val_acc: 0.97
    Epoch 15/15
    40/40 [==============================] - 24s 591ms/step - loss: 1.3833 - acc: 0.98 - val_loss: 1.4145 - val_acc: 0.98

    这表明训练集和测试集同分布,在训练集中学习的特征确实可以应用到测试集中,这是最好的情况。

    通过观察热力图也可以看到,最热的地方集中在特征上。比如在分辨不同的文字。

     

    但很多时候,自己建立的数据集并不完美,或者可能不同类的特征分辨并不明显,这时候用cnn强行进行分类就会出现很多奇葩的情况。

    考虑一种极端的情况,比如有四个类,而四个类都是同样的简单图形

     

    那么在学习过程中,会出现如下特征的acc和vol_acc

    40/40 [==============================] - 23s 579ms/step - loss: 1.3896 - acc: 0.2547 - val_loss: 1.3876 - val_acc: 0.2500
    Epoch 13/15
    40/40 [==============================] - 23s 579ms/step - loss: 1.3829 - acc: 0.2844 - val_loss: 1.3964 - val_acc: 0.2281
    Epoch 14/15
    40/40 [==============================] - 23s 580ms/step - loss: 1.3844 - acc: 0.2922 - val_loss: 1.3892 - val_acc: 0.2469
    Epoch 15/15
    40/40 [==============================] - 24s 591ms/step - loss: 1.3833 - acc: 0.2578 - val_loss: 1.4145 - val_acc: 0.2500
    
    

    从热力图上看

     

    可以看到因为没有什么特征,所有热力图分布也没有规律,可以说网络什么都没学到。

    那么考虑中间的情况,比如很相似的类学习会怎么样?比如不同年份的硬币

    40/40 [==============================] - 25s 614ms/step - loss: 0.0967 - acc: 0.9891 - val_loss: 0.3692 - val_acc: 0.8313
    40/40 [==============================] - 23s 580ms/step - loss: 0.0476 - acc: 0.9953 - val_loss: 0.3994 - val_acc: 0.7906
    40/40 [==============================] - 23s 578ms/step - loss: 0.0237 - acc: 0.9984 - val_loss: 0.5067 - val_acc: 0.7344
    40/40 [==============================] - 23s 579ms/step - loss: 0.0184 - acc: 1.0000 - val_loss: 0.5192 - val_acc: 0.7531
    40/40 [==============================] - 23s 582ms/step - loss: 0.0286 - acc: 0.9953 - val_loss: 0.9653 - val_acc: 0.6344
    40/40 [==============================] - 23s 584ms/step - loss: 0.0138 - acc: 1.0000 - val_loss: 0.4780 - val_acc: 0.7688
    40/40 [==============================] - 23s 583ms/step - loss: 0.0115 - acc: 0.9984 - val_loss: 0.5485 - val_acc: 0.7438
    40/40 [==============================] - 23s 581ms/step - loss: 0.0096 - acc: 1.0000 - val_loss: 0.5658 - val_acc: 0.7406
    40/40 [==============================] - 23s 578ms/step - loss: 0.0046 - acc: 1.0000 - val_loss: 0.5070 - val_acc: 0.7562

    可以看到,虽然网络有一定分辨力,但是学习的特征位置并不对,这可能是网络的分辨力有限,或者数据集过小导致的,具体怎么解决还没有想清楚??可以看到,可以看到除非完全没有特征,否则train acc一定能到100%,但是这个是事没有意义的,这就是过拟合。

    一开始同步增长,是在学习特征,后来volacc和acc开始有差异,就是过拟合

    这可能是训练集过小导致的,如果图片中只有年份呢?

    acc = 0.85,vol_acc=0.85

    acc = 0.90,vol_acc=0.90   

    acc = 0.92,vol_acc=0.92   

    acc = 0.94,vol_acc=0.92

    可以看到,还是能正确分类的,之所以硬币不能正确分类,是因为训练数据集过小,其他特征掩盖了年份的特征,只要增大数据量就行了。

     

     

    另外。还有几点训练技巧:

    1、拓展函数不要怕极端,极端的拓展函数有利于学到目标真正的特征。

    2、使用灰度图作为训练集?如果以纹理为主,使用灰度图,灰度图能增强网络的鲁棒性,因为可以减少光照的影响,但是会损失颜色信息,可以用结果看看到底该使用哪种图?

    3、使用小的分辨率图片可能错过某些特征,尤其是在小数据集的时候,所以可能的话使用大数据集,或者提高分辨率,根据使用者的目标。

     

    展开全文
  • 1.添加网络结构 model.add(...) model.add(...) ... 2.模型编译 ...model.compile(loss='...',omeptimizer='...',...plt.plot(history.epoch, history.history['val_acc'], label = 'val_acc') plt.legend()
  • 本文:训练过程的可视化包括训练集和验证集的acc和loss曲线,根据曲线的不同特点进行超参数调节,可以不断优化网络,总结以下一些曲线特点。 开发环境:TensorFlow + Keras + Python 问题类型:二分类问题 数据集:...
  • 可以看出我的keras版本history关键字不是简写val_acc,而是val_accuracy,更换后解决报错!!! 补充知识:python运行出现错误KeyError: ‘:’ 冒号中英文切换的问题 即使是在 ‘ ‘ 里的,也要
  • val_acc = hist.history['val_acc'] # make a figure fig = plt.figure(figsize=(8,4)) # subplot loss ax1 = fig.add_subplot(121) ax1.plot(loss, label='train_loss') ax1.plot(val_loss, label='val_...
  • - 第一步 # define the function def training_vis(hist): loss = hist.history['loss'] val_loss = hist.history['val_loss'] acc = hist.history['acc'] val_acc = hist.history['val_acc'] ...
  • 3112/3112 [==============================] - 73s 237ms/step - loss: 8.1257 - acc: 0.4900 - val_loss: 8.1763 - val_acc: 0.4927 Epoch 2/15 3112/3112 [==============================] - 71s 231ms/step -...
  • 运行代码时train_accval_acc均为0

    千次阅读 2020-08-27 22:11:14
    部分代码如下: ... % (epoch + 1, train_loss / 2000 ,train_acc/2000,val_loss/800,val_acc/800, end_time-start_time)) 解决方法:设定train_accval_acc数据类型为double即可正常显示。 print('epoch
  • https://www.zhihu.com/question/58200419
  • val_acc一直不变

    千次阅读 2020-02-11 20:55:21
    val_loss一直不变的原因 之前用keras编写了LSTM模型,做图片分类,自己划分了测试集和训练集,但是得到的结果是每个epoch训练的准确率都不变。 探索 我一直以为是我的数据的读取方式不对,我一直在从这方面下手,...
  • KeyError:“val_acc“解决方法

    千次阅读 2020-04-25 13:39:08
    问题 keras训练过程中出现了下面...需要将ModelCheckpoint(‘./ckpt/fine_tuning/weights.{epoch:02d}-{val_acc:.2f}.hdf5’, 这里的{val_acc:.2f}参数需要更改为新的参数:accuracy{accuracy:.2f} 结果: 通过! ...
  • 本文:训练过程的可视化包括训练集和验证集的acc和loss曲线,根据曲线的不同特点进行超参数调节,可以不断优化网络,总结以下一些曲线特点。 开发环境:TensorFlow + Keras + Python 问题类型:二分类问题 数据集...
  • 最近在做一个用简单的lstm预测时序数据分类的模型,在训练过程中,出现了loss在持续减小,而accval_acc始终不变的情况,经过不断的调参,找到了其中的问题,在此记录下: 问题描述: 具体情况如下: Epoch ...
  • 在学习使用keras库遇到了这个问题。 可能是由于版本不同导致,那么要怎么判断自己的版本用的是哪个呢?...可以看到loss和val_loss还是一样的,但是我的accval_acc却变成了binary_accuracy和val_binary_ac...
  • 首先,之所以会出现KeyError: ‘accuracy’、KeyError: ‘acc’、KeyError: 'val_acc’等报错信息,是由于keras库(一个开源人工神经网络库)版本不同所造成的,下面分别就其进行简述之。 Index 目录索引报错信息之...
  • 主要介绍了浅谈keras中loss与val_loss的关系,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • KeyError:"val_acc"报错原因分析

    千次阅读 2019-09-26 16:03:46
    原因分析:问题出现主要是...# ‘./ckpt/fine_tuning/weights.{epoch:02d}-{val_acc:.2f}.hdf5’, 这里的val_acc:参数错误需要更改为新的参数或者去掉 ‘./ckpt/fine_tuning/weights.{epoch:02d}.hdf5’, monitor...
  • 前言 在使用keras时候报错Keyerror ‘acc’...val_acc也是如此。 步骤 打印history关键字 print(history.history.keys()) 将自己定义错的关键字更正为上面print函数显示的关键字。 结果 可以看出我的keras版...
  • 使用keras绘制实时的loss与acc曲线

    万次阅读 热门讨论 2018-10-31 11:39:34
    self.draw_p(self.val_acc['batch'], 'acc', 'val_batch') def on_epoch_end(self, batch, logs={}): # 每一个epoch完成后向容器里面追加loss,acc self.losses['epoch'].append(logs.get('loss')) self....
  • 在使用keras时候报错Keyerror ‘acc’,这是一个keras版本问题 **解决办法:**打印history关键字 print(history.history.keys()) 按照dict_keys([‘val_loss’, ‘val_binary_accuracy’, ‘loss’, ‘binary_...
  • 0s - loss: nan - acc: 0.49 - ETA: 0s - loss: nan - acc: 0.49 - ETA: 0s - loss: nan - acc: 0.49 - ETA: 0s - loss: nan - acc: 0.49 - 3s 423us/step - loss: nan - acc: 0.5001 - val_loss: nan - val_acc: 0...
  • 程序运行出现KeyError: ‘acc’ 和KeyError: 'val_acc’的错误。 解决方法: 在Keras 2.3.0中,矩阵的报告方式已更改为与指定的确切名称相匹配。 如果您使用的是较旧的代码或较旧的代码示例,则可能会遇到错误。 ...
  • 问题: 在使用keras时候报错Keyerror ‘acc’ 原因: 这是一个keras版本问题,acc和accuracy...val_acc也是如此。 解决方案: 打印history关键字 print(history.history.keys()) 将报错部分改为打印出的"K" “V" ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,933
精华内容 8,773
关键字:

accval