机器学习(三)——预备知识(学习率与激活函数)
生活随笔
收集整理的這篇文章主要介紹了
机器学习(三)——预备知识(学习率与激活函数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
預備知識
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等于常數是使得每次產生的隨機數相同 # a = rdm.rand()##不給參數,默認生成一個0到1之間的隨機數 # b = rdm.rand(3,4)##生成一個二維的 # 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 后面的一樣,返回一個二維的,列要保持一致 ###.ravel()將其拉直為一維數組 c_將兩個數組配成對輸出 grid = np.c_[x.ravel(), y.ravel()] print("x:", x) print("y:", y) print("grid:\n", grid)學習率
###指數衰減學習率 #可以先用較大的學習率,快速得到較優解,然后逐步減小學習率,使模型在訓練后期穩定 #指數衰減學習率 = 初始學習率 * 學習衰減率(當前輪數 / 多少輪衰減一次) 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))激活函數
import tensorflow as tf ###sigmoid函數,能歸一化數據 #特點 1.易造成梯度消失 2.輸出非0均值收斂慢 3.冪運算復雜,訓練時間長 tf.nn.sigmoid()###tanh函數 特點1.輸出是0均值 2.易造成梯度消失 3.冪運算復雜,訓練時間長 tf.nn.tanh()###relu函數 x < 0時輸出0 x >= 0時 輸出x #優點 1.解決了梯度消失問題 2.只需要判斷輸入是否大于0, 計算速度快 3.收斂速度遠大于sigmoid與tanh #缺點 1.輸出非0均值,收斂慢 2.Dead ReIU問題:某些神經元可能永遠不會被激活,導致相應的參數永遠不能被更新 tf.nn.relu###leaky_relu,relu的升級版,但在實際操作中不一定比relu好總結
以上是生活随笔為你收集整理的机器学习(三)——预备知识(学习率与激活函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习(二)——鸢尾花案例
- 下一篇: 机器学习(四)——损失函数