keras使用

1. 数据的探索

ImageNet数据集中包含有猫狗的具体分类,对一个图片在载有ImageNet上预训练权值的xception模型上进行预测,如果其预测结果top50不包含猫狗真实的标签分类(图片预测值前50都没有正常分类),那么就将其视为异常值在输入模型之前,我们需要对数据集进行预处理:剔除掉训练集中的异常值。
参考:https://blog.csdn.net/tustzhoujian/article/details/81335032

2.keras利用TensorBoard画loss和acc曲线

这个网上很多,但很零碎,挺难运行的起来的。现提供一种可以运行的代码供参考:

 from keras.callbacks import TensorBoard, EarlyStopping
  tbCallBack = TensorBoard(log_dir='./Graph',
                             histogram_freq=0,
                             write_graph=True,
                             write_images=True)
    early_stopping = EarlyStopping(monitor='val_loss', mode ='min',patience=2)
    model_history = model.fit_generator(train_generator, epochs=30, validation_data=evaluate_generator,
                                        callbacks=[early_stopping,tbCallBack])

这段代码核心部分是导包分清楚是在tensorflow下的keras还是直接在keras下,不然会出现tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource错误,原因是应用的TensorBoard与keras不在同一层。early_stopping 控制当模型达到指定的条件时停止训练保存现有模型。

3. acc、val_acc、loss、val_loss详解

acc为训练集上的准确率,val_acc为验证集上的准确率。
loss为训练集上的损失,val_loss是验证集上的损失。
(1)acc、val_acc停留在一个值附近,上下震荡
原因陷入了局部最优
解决方案:lr太小,不足以跳出这个小坑,增大lr值。例如原始的预编译模型部分为:

model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss='categorical_crossentropy', metrics=['accuracy'])

这时候你需要把lr调大一点,可以是2倍或者10倍,视情况而定。此时还需要接着观察acc以及val_acc的变化。
(2)loss下降acc上升,val_acc下降val_loss上升
描述: 20分类的迁移学习训练过程中,训练集上的acc正常上升,第一轮训练稳定在0.4,val_acc第一轮只有0.06上下,以后acc不断增大,val_acc出现下降趋势。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值