zoukankan      html  css  js  c++  java
  • keras_0_快速开始部分

    1. "sample", "batch", "epoch" 分别是什么?

    为了正确地使用 Keras,以下是必须了解和理解的一些常见定义:

    • Sample: 样本,数据集中的一个元素,一条数据。
    • 例1: 在卷积神经网络中,一张图像是一个样本。
    • 例2: 在语音识别模型中,一段音频是一个样本。
    • Batch: 批,含有 N 个样本的集合。每一个 batch 的样本都是独立并行处理的。在训练时,一个 batch 的结果只会用来更新一次模型。 一个 batch 的样本通常比单个输入更接近于总体输入数据的分布,batch 越大就越近似。然而,每个 batch 将花费更长的时间来处理,并且仍然只更新模型一次。在推理(评估/预测)时,建议条件允许的情况下选择一个尽可能大的 batch,(因为较大的 batch 通常评估/预测的速度会更快)。
    • Epoch: 轮次,通常被定义为 「在整个数据集上的一轮迭代」,用于训练的不同的阶段,这有利于记录和定期评估。
    • 当在 Keras 模型的 fit 方法中使用 evaluation_dataevaluation_split 时,评估将在每个 epoch 结束时运行。
    • 在 Keras 中,可以添加专门的用于在 epoch 结束时运行的 callbacks 回调。例如学习率变化和模型检查点(保存)。

    2. 为什么训练误差比测试误差高很多?

    1. Keras 模型有两种模式:训练和测试。正则化机制,如 Dropout 和 L1/L2 权重正则化,在测试时是关闭的。(是这样吗?我不太确定!)

    2. 此外,训练误差是每批训练数据的平均误差。由于你的模型是随着时间而变化的,一个 epoch 中的第一批数据的误差通常比最后一批的要。另一方面,测试误差是模型在一个 epoch 训练完后计算的,因而误差较小。

    3. 如何在keras中获取可复现的实验结果?

    1. 一个例子:
      • PYTHONHASHSEED
      • numpy中使用的随机数,python中使用的随机数
      • 强制 TensorFlow 使用单线程。
    import numpy as np
    import tensorflow as tf
    import random as rn
    
    # 以下是 Python 3.2.3 以上所必需的,
    # 为了使某些基于散列的操作可复现。
    # https://docs.python.org/3.4/using/cmdline.html#envvar-PYTHONHASHSEED
    # https://github.com/keras-team/keras/issues/2280#issuecomment-306959926
    
    import os
    os.environ['PYTHONHASHSEED'] = '0'
    
    # 以下是 Numpy 在一个明确的初始状态生成固定随机数字所必需的。
    
    np.random.seed(42)
    
    # 以下是 Python 在一个明确的初始状态生成固定随机数字所必需的。
    
    rn.seed(12345)
    
    # 强制 TensorFlow 使用单线程。
    # 多线程是结果不可复现的一个潜在的来源。
    # 更多详情,见: https://stackoverflow.com/questions/42022950/which-seeds-have-to-be-set-where-to-realize-100-reproducibility-of-training-res
    
    session_conf = tf.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=1)
    
    from keras import backend as K
    
    # `tf.set_random_seed()` 将会以 TensorFlow 为后端,
    # 在一个明确的初始状态下生成固定随机数字。
    # 更多详情,见: https://www.tensorflow.org/api_docs/python/tf/set_random_seed
    
    tf.set_random_seed(1234)
    
    sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)
    K.set_session(sess)
    
    # 剩余代码 ...
    
  • 相关阅读:
    再谈TextField
    IOS-TextField知多少
    leftBarButtonItems
    LeftBarButtonItems,定制导航栏返回按钮
    Apple Mach-O Linker (id) Error "_OBJC_CLASS...错误解决办法 Apple Mach-O Linker (id) Error "_OBJC_CLASS...错误解决办法
    Unrecognized Selector Sent to Instance问题之诱敌深入关门打狗解决办法
    UNRECOGNIZED SELECTOR SENT TO INSTANCE 问题快速定位的方法
    Present ViewController,模态详解
    UILABEL AUTOLAYOUT自动换行 版本区别
    iOS自动布局解决警告Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0
  • 原文地址:https://www.cnblogs.com/LS1314/p/10380589.html
Copyright © 2011-2022 走看看