新普金娱乐网址


西洋篇,杂交怪兽动物园

数学2014-2015读计划

TensorFlow深层神经网络常用方法

  • 十月 12, 2018
  • 数学
  • 没有评论

4、神经网络的更是优化

  • 学习率的安装
      于梯度下降算法中,如果学习率取值过非常,可能会见冒出数值两边震荡的图景,永远都到不了无与伦比值,而如果学习率取值过些微,则会大大降低优化的进度,TensorFlow提供了学习率设置的法门–指数衰减法,更改上面的梯度例子如下:

  • TRAINING_STEPS=100

    global_step=tf.Variable(1)#初始化为0
    #def exponential_decay(learning_rate, global_step, decay_steps, decay_rate,
    #                      staircase=False, name=None):分别为:初始学习率,经过decay_steps轮计算,学习率乘以decay_rate,staircase为T,学习率阶梯状衰减,否则,连续衰减
    LEA_RATE=tf.train.exponential_decay(0.1,global_step,1,0.96,staircase=False)#获得学习率,指数衰减法,开始较大的衰减率,后来指数变小
    x=tf.Variable(tf.constant(5,dtype=tf.float32),name='x')
    y=tf.square(x)
    train_op=tf.train.GradientDescentOptimizer(LEA_RATE).minimize(y,global_step=global_step)#实现梯度下降算法的优化器,global_step会自动加1,可当计数器用
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for i in range(TRAINING_STEPS):
            sess.run(train_op)
    
            LEA_RATE_value=sess.run(LEA_RATE)
            x_value=sess.run(x)
            print(i+1, i+1, x_value, LEA_RATE_value,sess.run(global_step))
    
  • 过拟合问题
      概念:当一个型过呢复杂性过后,它见面大好的‘记忆’每一个训练多少中随机随机噪音的一些如遗忘了而错过‘学习’训练多少遭到通用的动向。意思就是是了拟合数据中之肆意噪音虽然只是落最小的损失函数,但是针对职务数据也许无法做出可靠的判读。
      解决措施:正则化–在损失函数中补充加写模型复杂程度的指标。使用办法:

  • #lambda正则化项的权重,w需要计算正则化损失的参数,也就是是干的权重

    loss=之前的损失函数+tf.contrib.layers.l2_regularizer(lambda)(w)
    
    print(sess.run(tf.contrib.layers.l1_regularizer(0.5)(w)))#w中每个元素的绝对值之和乘0.5,所以值为5
    print(sess.run(tf.contrib.layers.l2_regularizer(0.5)(w)))#w中每个元素的平方和除以2再乘0.5,结果为7.5
    print(sess.run(tf.contrib.layers.l1_l2_regularizer(0.5)(w)))#w中的每个元素之和乘0.5+w中每个元素的平方和乘(1-0.5)
    

     当神经网络的参数增多时,损失函数也拿会加,若将该描绘在一个定义着,可读性会死不同,容易错,所以当TensorFlow中得以为此一下智:

  • #losses是集结的名1,mse_loss是入集合的情节

    tf.add_to_collection('losses', mse_loss)
    #get_collection返回的是losses集合,add_n是将集合的中值求和
    loss = tf.add_n(tf.get_collection('losses'))
    

表姑是一个身长小,热情之家,长在相同摆设看罢,让丁记不停歇的脸,在诊所外科上班,经常上夜班,平常二十四小时,只要电话来了,就得马上去诊所,还好,医院离家很贴近,她说,医生的干活,尤其外科大夫,根本未是妻子的工作,有的上,抱在患儿的肠管,一抱几独小时,外科的病人,因为出车祸,急诊的特别多,轻伤还好,重伤,手术得异常老,作为妻子,当外科医生,体力消耗太死了。

1、激活函数

  将各国一个神经元(神经网络的节点)的出口通过一个非线性函数便只是使得所有神经网络的模型非线性化,这个非线性函数就是激活函数。
  常用非线性激活函数:tf.nn.relu、tf.sigmoid、tf.tanh;使用方法,例:

tf.nn.relu(tf.matmul(x,w1)+biases1)  

偏置项:而是分晓啊数学中y=ax+b中之b,如果当分拣的状下,两触及刚好在经过原点的直线上,如果没有偏置项b的语句,无法分开直线将简单个点分离。

 父母之爱子,则也之计深远,这一点,贫富的家都一模一样。

6、常用方法

  • tf.reduce_sum() #和
  • tf.greater(v1,v2)#v1和v2的每个对应元素于,若v1大于v2,则为True否则为False
  • tf.where(tf.greater(v1,v2),v1,v2)#基于第一单参数的T和F来抉择v1和v2,若否False则元素选V2遭到之值,整个函数相当给选择v1和v2中比充分的再三组成一个举证

事实上它巴不得,早点去家,学校为无尽多留恋,功课越来越多,数学越来越难以,反正自己太多上顶初三毕业,早离开家也好。

2、损失函数

  概念:用来评论模型的预测值Y^=f(X)与真正值Y的免雷同程度,它是一个非负实值函数。通常使用L(Y,f(x))来代表,损失函数越小,模型的性能就更是好。

  • 经典损失函数

1.分拣问题:将不同之样本分到事先定义好的品种中。常因此交叉熵计算;计算办法:

cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))
#y_正确结果,y测试结果;y_*tf.log(tf.clip_by_value(y,1e-10,1.0))得到n*m的二维矩阵,
#n为样例的数量,m为分类的类别数量。由于交叉熵一般与softmax回归一起使用,所以tf对其进行统一封装,  
cross_entropy=tf.nn.softmax_cross_entropy_with_logits(y,y_)

  2.回归问题:对具体数值的预测。常因此都方差;计算办法:

mse=tf.reduce_mean(tf.square(y_-y)#y_标准答案,y输出答案
  • 起定义损失函数
      除了分类以及回归还出另题目,所以可以依据具体情况,具体写对应之损失函数。

 浮萍告诉妈妈“我情愿去城里,照顾表姑家的子女。”

  若一味透过线性变换,任意层的神经网络模型和单层神经网络模型的表达能力没有其他区别,这是线性模型的局限性。对于线性可划分的题材遭到,线性模型可缓解,但在现实生活中,绝大部分之题目且是力不从心线性分割的。
  感知机:单层神经网络。不克处理异或问题。

在押在发点为难的妈妈,浮萍一边切菜做饭,一边说“妈,我定的出来打工,妹妹们这长大了,我上学你必也从不钱,再说,我初中毕业为不顶年,不失表姑那,也尚未地方可以去打工的,带儿女,我从未问题,妹妹等产生一个及单好学就执行了。”

  深度上所示深层神经网络的代名词,重要特色:多交汇、非线性。

它们知道给浮萍来,很诧异,她记忆中,浮萍还是一个躲闪的充分眼,干瘦的娃儿,浮萍妈的口舌,说服了它们,“浮萍从小便帮自己看孩子,家务都见面开,又不易于说,工资也未用为,等孩子十分了,你看正在让她呢学点啥,以后得拉自己,生以我们是小,想上有人头地,那是免容许的从业。”

5、滑动平均模型

  作用:在运随机梯度下降算法训练神经网络时,可才所以该办法以得水平达开展优化。使用办法如下:

v1=tf.Variable(0,dtype=tf.float32)
step=tf.Variable(0,trainable=False)
#定义一个滑动平均模型的类,初始化衰减率为0.99,控制衰减率的变量step
ema=tf.train.ExponentialMovingAverage(0.99,step)
#定义一个更新变量滑动平均的操作,并给定一个列表,每次执行这个操作时,列表更新
maintain_ave_op=ema.apply([v1])

with tf.Session() as sess:
    init_op=tf.global_variables_initializer()
    sess.run(init_op)
    #上面的V1*衰减率+(1-衰减率)*更新变量v1,其中衰减率=min{初始化衰减率,(1+step)/(10+step)}
    print(sess.run([v1,ema.average(v1)]))#结果:[0,0] 

    sess.run(tf.assign(v1,5))
    sess.run(maintain_ave_op)
    print(sess.run([v1,ema.average(v1)]))#0*min{0.99,((1+step)/(step+10))}+(1-min{0.99,((1+step)/(step+10))})*5

    sess.run(tf.assign(step,10000))
    sess.run(tf.assign(v1,10))
    sess.run(maintain_ave_op)
    print(sess.run([v1,ema.average(v1)]))

    sess.run(maintain_ave_op)
    print(sess.run([v1,ema.average(v1)]))

 妈妈则经常骂其,打其,但是,也是由衷的看它们还相应学学,她们家发生只远房亲属,在省会,夫妻俩都以医务室上班,孩子最小,长辈还非能够看孩子,托他们当乡找个保姆,妈妈不乐意自己孩子这样小,去受家打工,特别是错过当保姆。

3数学、神经网络优化算法

    目的:使损失函数尽可能的略微;

  • 反向传播算法(backpropagtion):给闹一个便捷的法子于具有参数上采取梯度下降算法;是训练神经网络的基本算法,可以依据定义好之损失函数优化神经网络中参数的取值;
  • 梯度下降算法(gradient decent):优化单个参数的取值
      当求损失函数的价值吗极端小价经常,可以因该偏导来判定该下降趋势,梯度便是偏导值;当损失函数未至绝小价经常,(损失函数-梯度)可变的重新有些,使用反向传播算法,可径直以损失函数减去那个梯度,知道得最好小之损失函数;其中由梯度可能过大,导致去最小价,所以只是在梯度的价值就以学习率。即:下一个损失函数=损失函数-梯度*学习率(其中梯度便是损失函数的偏导),下面让来一个损失函数为y=x^2的例证:

    • TRAINING_STEPS=5
      x=tf.Variable(tf.constant(5,dtype=tf.float32),name='x')
      y=tf.square(x)
      train_op=tf.train.GradientDescentOptimizer(0.3).minimize(y)#实现梯度下降算法的优化器
      with tf.Session() as sess:
          sess.run(tf.global_variables_initializer())
          for i in range(TRAINING_STEPS):
              sess.run(train_op)
              x_value=sess.run(x)
              print(i+1, x_value)
      
![](https://i.imgur.com/c8FDpPz.png)  
**注意:**梯度下降算法并不可保证优化的函数能得到全局最优解,只有损失函数为凸函数时才可保证;样例如下图
  •  数学 1
  • 轻易梯度下降算法(stochastic gradient
    decent):梯度下降算法中,由于计算的是整套教练多少及太小化最完美,所以损失函数是于享有训练多少上的损失及,这样每轮迭代造成日了长;由此问题引出随机梯度下降算法,随机优化某一样长长的训练多少上之损失函数。该办法虽然上时间缩短,但是会招函数无法获取全局最帅。

  • 实际运用方法:梯度与人身自由梯度的折中–每次计算同一有点片段训练多少的损失函数(batch),该方式可大大削减收敛所急需的迭代次数,缩短时间,同时可要是消失到之结果绝出色。神经网络的训大都遵循以下过程:

  • batch_size=n

    #读取一小部分数据作为当前训练集
    x=tf.placeholder(tf.float32,shape=[None,2],name='x-input')
    x=tf.placeholder(tf.float32,shape=[None,1],name='y-input')
    #定义神经网络结构和优化算法
    loss=...
    train_step=tf.train.AdamOptimizer(0.001).minimize(loss)
    
    with tf.Session() as sess:
        #参数初始化
        ...
        #迭代更新参数
        for i in range(STEPS):
            #将所有随机数据重新打乱之后再选取将会获得更好的优化效果
            X=..
            Y=...
            sess.run(train_step,feed_dict={x:X,y:Y})   
    

她告知妹妹等如果听妈妈的语句,毅然收拾了平等管衣物,和表姑夫一起,去省城了,至今,她依然记忆,自己虽用在雷同保险旧衣物,却豪情万丈,要拿家中的烦恼,永远抛在身后,却没有悟出,这无非是噩梦的发端。

当病房的先生,四十年度会健康上下班,根本无须想,坐门诊还吓一点,为了多得利,她产生时分还为同事值班。

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图