机器学习(三)——预备知识(学习率与激活函数)
生活随笔
收集整理的這篇文章主要介紹了
机器学习(三)——预备知识(学习率与激活函数)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
預(yù)備知識(shí)
import tensorflow as tf import numpy as np # a = tf.constant([1,3,2,2,5]) # b = tf.constant([0,4,1,1,6]) # c = tf.where(tf.greater(a,b), a, b)#tf.where 若a > b則返回a, 否則返回b # print("c:", c)# rdm = np.random.RandomState(seed=1)#seed等于常數(shù)是使得每次產(chǎn)生的隨機(jī)數(shù)相同 # a = rdm.rand()##不給參數(shù),默認(rèn)生成一個(gè)0到1之間的隨機(jī)數(shù) # b = rdm.rand(3,4)##生成一個(gè)二維的 # print(a) # print(b)# a = np.array([1,2,3]) # b = np.array([4,5,6]) # c = np.vstack((a,b))#縱向疊加 # d = np.hstack((a,b))#橫向疊加 # print(c) # print(d)x,y = np.mgrid[1:3:1, 2:4:0.5]#1是起始, 到3不包含3,步長為1 后面的一樣,返回一個(gè)二維的,列要保持一致 ###.ravel()將其拉直為一維數(shù)組 c_將兩個(gè)數(shù)組配成對(duì)輸出 grid = np.c_[x.ravel(), y.ravel()] print("x:", x) print("y:", y) print("grid:\n", grid)學(xué)習(xí)率
###指數(shù)衰減學(xué)習(xí)率 #可以先用較大的學(xué)習(xí)率,快速得到較優(yōu)解,然后逐步減小學(xué)習(xí)率,使模型在訓(xùn)練后期穩(wěn)定 #指數(shù)衰減學(xué)習(xí)率 = 初始學(xué)習(xí)率 * 學(xué)習(xí)衰減率(當(dāng)前輪數(shù) / 多少輪衰減一次) import tensorflow as tf epoch = 20 lr_base = 0.2 lr_decay = 0.99 lr_step = 1 for epoch in range(epoch):lr = lr_base * lr_decay ** (epoch / lr_step)with tf.GradientTape() as tape:loss = tf.square(w + 1)grads = tape.gradient(loss, w)w.assign_sub(lr * grads)print("After %s epoch, w is %f, loss is %f, lr is %f"%(epoch, w.numpy(), loss, lr))激活函數(shù)
import tensorflow as tf ###sigmoid函數(shù),能歸一化數(shù)據(jù) #特點(diǎn) 1.易造成梯度消失 2.輸出非0均值收斂慢 3.冪運(yùn)算復(fù)雜,訓(xùn)練時(shí)間長 tf.nn.sigmoid()###tanh函數(shù) 特點(diǎn)1.輸出是0均值 2.易造成梯度消失 3.冪運(yùn)算復(fù)雜,訓(xùn)練時(shí)間長 tf.nn.tanh()###relu函數(shù) x < 0時(shí)輸出0 x >= 0時(shí) 輸出x #優(yōu)點(diǎn) 1.解決了梯度消失問題 2.只需要判斷輸入是否大于0, 計(jì)算速度快 3.收斂速度遠(yuǎn)大于sigmoid與tanh #缺點(diǎn) 1.輸出非0均值,收斂慢 2.Dead ReIU問題:某些神經(jīng)元可能永遠(yuǎn)不會(huì)被激活,導(dǎo)致相應(yīng)的參數(shù)永遠(yuǎn)不能被更新 tf.nn.relu###leaky_relu,relu的升級(jí)版,但在實(shí)際操作中不一定比relu好總結(jié)
以上是生活随笔為你收集整理的机器学习(三)——预备知识(学习率与激活函数)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(二)——鸢尾花案例
- 下一篇: 机器学习(四)——损失函数