• 炼丹技巧


    1. 无脑Adam

     它的默认初始学习率是0.001,但是发现设置为0.0002效果很好    注意记录loss的时候最好把cross-entropy和regularization的loss分来记录,同时对比,最好是刚开始时两个方面的loss都在下降,不要说一开始一直都是regularization loss在下降,分类loss不变,这样很容易rloss全变成0从而loss不下降了 

    ❤发现lr越小,cross-entropy loss下降得更快些, lr越大越容易让regularization loss降到0,之后就训练不了了【基于Adam】❤

    1 lr = tf.Variable(FLAGS.initial_lr, trainable=False, name="learning_rate")
    2 tf.summary.scalar("learning_rate",lr)
    3 training_op = tf.train.AdamOptimizer(lr).minimize(total_loss,global_step)

    2. lr 衰减

       之前都是用tf.train.piecewise_constant()   但是自己定义这个衰减距离不是很科学,那就用一个变量记住当前validation的最好结果,然后用一个count记录下validation的结果小于best的次数,如果这个次数大于某个阈值,就对learning_rate进行衰减操作,一般这个阈值设置为一个epoch的大小,也就是 count_to_patience = batches_per_epoch/validation_frequency       一个epoch有多少个batch /  隔多少个batch进行validation    例:1500/300 = 5

     1 best_validation_score = 0.0
     2 patience = 5
     3 count_to_patience = 0
     4 
     5 if step % 300 == 0:
     6     accuracy = validation()
     7     if accuracy > best_validation_score:
     8         best_validation_score = accuracy
     9     else:
    10         count_to_patience += 1
    11     if count_to_patience == patience:
    12         count_to_patience = 0
    13         lr /= 10

    3. batch_size

       对于我们穷人来说是尽量在卡上能多大就多大,之前有人不提倡说batch_size很大,但是我们的条件也大不到哪儿去,能用64就不要用32   论文中常用的是256一个batch

    4. weights 初始化方法

     都说 LSUV > He > Xavier > Guassian   没有用过LSUV【论文All you need is a good init 】,在tensorflow里使用He init或者说是MSRA init很方便,有现有函数,使用着挺好的【论文: Delve into ..... Kaiming He】

    1 with slim.arg_scope([slim.conv2d],
    2                     weights_initializer=slim.variance_scaling_initializer())    

    5. nvidia-smi  多卡情况下特别慢

    sudo nvidia-persistenced --persistence-mode    这个命令之后就会很快

    6. 一个具体调参例子  from: Karparthy

  • 相关阅读:
    论文笔记:目标检测算法(R-CNN,Fast R-CNN,Faster R-CNN,FPN,YOLOv1-v3)
    论文笔记:IRGAN——A Minimax Game for Unifying Generative and Discriminative Information
    springer论文模板参考文献的顺序问题
    CIFAR和SVHN在各CNN论文中的结果
    论文笔记:CNN经典结构2(WideResNet,FractalNet,DenseNet,ResNeXt,DPN,SENet)
    latex常用符号
    python中的引用传递,可变对象,不可变对象,list注意点
    ImageNet历年冠军和相关CNN模型
    matplotlib 的颜色
    调整matplotlib的图例legend的位置
  • 原文地址:https://www.cnblogs.com/lainey/p/8308821.html
Copyright © 2020-2023  润新知