DL之DNN优化技术:神经网络算法简介之数据训练优化【mini-batch技术+etc】
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                DL之DNN优化技术:神经网络算法简介之数据训练优化【mini-batch技术+etc】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                DL之DNN優(yōu)化技術(shù):神經(jīng)網(wǎng)絡(luò)算法簡(jiǎn)介之?dāng)?shù)據(jù)訓(xùn)練優(yōu)化【mini-batch技術(shù)+etc】
?
?
目錄
1、mini-batch技術(shù)
輸出結(jié)果
實(shí)現(xiàn)代碼
?
?
?
1、mini-batch技術(shù)
輸出結(jié)果
?
?
?
實(shí)現(xiàn)代碼
# coding: utf-8 #DL之mini-batch:理解深度學(xué)習(xí)算法中的優(yōu)化技術(shù)【mini-batch技術(shù)+etc】import numpy as np from DIY_module.mnist import load_mnist(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, one_hot_label=True) #設(shè)定參數(shù)one_hot_label=True,可以得到one-hot 表示(即僅正確解標(biāo)簽為1,其余為0 的數(shù)據(jù)結(jié)構(gòu))。print(x_train.shape) # (60000, 784) print(t_train.shape) # (60000, 10)#從訓(xùn)練數(shù)據(jù)中隨機(jī)抽取10筆數(shù)據(jù),只需指定這些隨機(jī)選出的索引,取出mini-batch,然后使用這個(gè)mini-batch 計(jì)算損失函數(shù)即可! train_size = x_train.shape[0] batch_size = 10 batch_mask = np.random.choice(train_size, batch_size) #np.random.choice(60000, 10)會(huì)從0 到59999 之間隨機(jī)選擇10 個(gè)數(shù)字x_batch = x_train[batch_mask] t_batch = t_train[batch_mask]#實(shí)現(xiàn)mini-batch版交叉熵誤差 #同時(shí)處理單個(gè)數(shù)據(jù)和批量數(shù)據(jù)(數(shù)據(jù)作為batch集中輸入)兩種情況的函數(shù)。 def cross_entropy_error(y, t):if y.ndim == 1: #if判斷y的維度為1 時(shí),即求單個(gè)數(shù)據(jù)的交叉熵誤差時(shí),需要改變數(shù)據(jù)的形狀t = t.reshape(1, t.size)y = y.reshape(1, y.size) #當(dāng)輸入為mini-batch 時(shí),要用batch 的個(gè)數(shù)進(jìn)行正規(guī)化,計(jì)算單個(gè)數(shù)據(jù)的平均交叉熵誤差。batch_size = y.shape[0]return -np.sum(t * np.log(y + 1e-7)) / batch_size#當(dāng)監(jiān)督數(shù)據(jù)是標(biāo)簽形式(非one-hot 表示,而是像“2”“7”這樣的標(biāo)簽)時(shí),交叉熵誤差可通過如下代碼實(shí)現(xiàn)。 #(1)、實(shí)現(xiàn)的要點(diǎn)是,由于one-hot表示中t為0的元素的交叉熵誤差也為0,因此針對(duì)這些元素的計(jì)算可以忽略。即如果可以獲得神經(jīng)網(wǎng)絡(luò)在正確解標(biāo)簽處的輸出,就可以計(jì)算交叉熵誤差。 def cross_entropy_error(y, t):if y.ndim == 1:t = t.reshape(1, t.size)y = y.reshape(1, y.size)batch_size = y.shape[0]return -np.sum(np.log(y[np.arange(batch_size), t] + 1e-7)) / batch_size #微小值1e-7#np.log(y[np.arange(batch_size),t]) #np.arange(batch_size)會(huì)生成一個(gè)從0到batch_size-1的數(shù)組 #y[np.arange(batch_size),t] #會(huì)生成NumPy數(shù)組[y[0,2], y[1,7], y[2,0],y[3,9], y[4,4]])。?
?
?
總結(jié)
以上是生活随笔為你收集整理的DL之DNN优化技术:神经网络算法简介之数据训练优化【mini-batch技术+etc】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 成功解决attrs = config._
- 下一篇: 成功解决AttributeError:
