亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

pytorch 圖像中的數(shù)據(jù)預(yù)處理和批標(biāo)準(zhǔn)化實(shí)例

 更新時(shí)間:2020年01月15日 14:46:24   作者:xckkcxxck  
今天小編就為大家分享一篇pytorch 圖像中的數(shù)據(jù)預(yù)處理和批標(biāo)準(zhǔn)化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

目前數(shù)據(jù)預(yù)處理最常見(jiàn)的方法就是中心化和標(biāo)準(zhǔn)化。

中心化相當(dāng)于修正數(shù)據(jù)的中心位置,實(shí)現(xiàn)方法非常簡(jiǎn)單,就是在每個(gè)特征維度上減去對(duì)應(yīng)的均值,最后得到 0 均值的特征。

標(biāo)準(zhǔn)化也非常簡(jiǎn)單,在數(shù)據(jù)變成 0 均值之后,為了使得不同的特征維度有著相同的規(guī)模,可以除以標(biāo)準(zhǔn)差近似為一個(gè)標(biāo)準(zhǔn)正態(tài)分布,也可以依據(jù)最大值和最小值將其轉(zhuǎn)化為 -1 ~ 1 之間

批標(biāo)準(zhǔn)化:BN

在數(shù)據(jù)預(yù)處理的時(shí)候,我們盡量輸入特征不相關(guān)且滿(mǎn)足一個(gè)標(biāo)準(zhǔn)的正態(tài)分布,這樣模型的表現(xiàn)一般也較好。但是對(duì)于很深的網(wǎng)路結(jié)構(gòu),網(wǎng)路的非線性層會(huì)使得輸出的結(jié)果變得相關(guān),且不再滿(mǎn)足一個(gè)標(biāo)準(zhǔn)的 N(0, 1) 的分布,甚至輸出的中心已經(jīng)發(fā)生了偏移,這對(duì)于模型的訓(xùn)練,特別是深層的模型訓(xùn)練非常的困難。

所以在 2015 年一篇論文提出了這個(gè)方法,批標(biāo)準(zhǔn)化,簡(jiǎn)而言之,就是對(duì)于每一層網(wǎng)絡(luò)的輸出,對(duì)其做一個(gè)歸一化,使其服從標(biāo)準(zhǔn)的正態(tài)分布,這樣后一層網(wǎng)絡(luò)的輸入也是一個(gè)標(biāo)準(zhǔn)的正態(tài)分布,所以能夠比較好的進(jìn)行訓(xùn)練,加快收斂速度。

batch normalization 的實(shí)現(xiàn)非常簡(jiǎn)單,接下來(lái)寫(xiě)一下對(duì)應(yīng)的python代碼:

import sys
sys.path.append('..')
 
import torch
 
def simple_batch_norm_1d(x, gamma, beta):
  eps = 1e-5
  x_mean = torch.mean(x, dim=0, keepdim=True) # 保留維度進(jìn)行 broadcast
  x_var = torch.mean((x - x_mean) ** 2, dim=0, keepdim=True)
  x_hat = (x - x_mean) / torch.sqrt(x_var + eps)
  return gamma.view_as(x_mean) * x_hat + beta.view_as(x_mean)
   
x = torch.arange(15).view(5, 3)
gamma = torch.ones(x.shape[1])
beta = torch.zeros(x.shape[1])
print('before bn: ')
print(x)
y = simple_batch_norm_1d(x, gamma, beta)
print('after bn: ')
print(y)

測(cè)試的時(shí)候該使用批標(biāo)準(zhǔn)化嗎?

答案是肯定的,因?yàn)橛?xùn)練的時(shí)候使用了,而測(cè)試的時(shí)候不使用肯定會(huì)導(dǎo)致結(jié)果出現(xiàn)偏差,但是測(cè)試的時(shí)候如果只有一個(gè)數(shù)據(jù)集,那么均值不就是這個(gè)值,方差為 0 嗎?這顯然是隨機(jī)的,所以測(cè)試的時(shí)候不能用測(cè)試的數(shù)據(jù)集去算均值和方差,而是用訓(xùn)練的時(shí)候算出的移動(dòng)平均均值和方差去代替

下面我們實(shí)現(xiàn)以下能夠區(qū)分訓(xùn)練狀態(tài)和測(cè)試狀態(tài)的批標(biāo)準(zhǔn)化方法

def batch_norm_1d(x, gamma, beta, is_training, moving_mean, moving_var, moving_momentum=0.1):
  eps = 1e-5
  x_mean = torch.mean(x, dim=0, keepdim=True) # 保留維度進(jìn)行 broadcast
  x_var = torch.mean((x - x_mean) ** 2, dim=0, keepdim=True)
  if is_training:
    x_hat = (x - x_mean) / torch.sqrt(x_var + eps)
    moving_mean[:] = moving_momentum * moving_mean + (1. - moving_momentum) * x_mean
    moving_var[:] = moving_momentum * moving_var + (1. - moving_momentum) * x_var
  else:
    x_hat = (x - moving_mean) / torch.sqrt(moving_var + eps)
  return gamma.view_as(x_mean) * x_hat + beta.view_as(x_mean)

下面我們?cè)诰矸e網(wǎng)絡(luò)下試用一下批標(biāo)準(zhǔn)化看看效果

def data_tf(x):
  x = np.array(x, dtype='float32') / 255
  x = (x - 0.5) / 0.5 # 數(shù)據(jù)預(yù)處理,標(biāo)準(zhǔn)化
  x = torch.from_numpy(x)
  x = x.unsqueeze(0)
  return x
 
train_set = mnist.MNIST('./data', train=True, transform=data_tf, download=True) # 重新載入數(shù)據(jù)集,申明定義的數(shù)據(jù)變換
test_set = mnist.MNIST('./data', train=False, transform=data_tf, download=True)
train_data = DataLoader(train_set, batch_size=64, shuffle=True)
test_data = DataLoader(test_set, batch_size=128, shuffle=False)
# 使用批標(biāo)準(zhǔn)化
class conv_bn_net(nn.Module):
  def __init__(self):
    super(conv_bn_net, self).__init__()
    self.stage1 = nn.Sequential(
      nn.Conv2d(1, 6, 3, padding=1),
      nn.BatchNorm2d(6),
      nn.ReLU(True),
      nn.MaxPool2d(2, 2),
      nn.Conv2d(6, 16, 5),
      nn.BatchNorm2d(16),
      nn.ReLU(True),
      nn.MaxPool2d(2, 2)
    )
    
    self.classfy = nn.Linear(400, 10)
  def forward(self, x):
    x = self.stage1(x)
    x = x.view(x.shape[0], -1)
    x = self.classfy(x)
    return x
 
net = conv_bn_net()
optimizer = torch.optim.SGD(net.parameters(), 1e-1) # 使用隨機(jī)梯度下降,學(xué)習(xí)率 0.1
 
 
train(net, train_data, test_data, 5, optimizer, criterion)

以上這篇pytorch 圖像中的數(shù)據(jù)預(yù)處理和批標(biāo)準(zhǔn)化實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pyqt5實(shí)現(xiàn)繪制ui,列表窗口,滾動(dòng)窗口顯示圖片的方法

    pyqt5實(shí)現(xiàn)繪制ui,列表窗口,滾動(dòng)窗口顯示圖片的方法

    今天小編就為大家分享一篇pyqt5實(shí)現(xiàn)繪制ui,列表窗口,滾動(dòng)窗口顯示圖片的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python分割指定頁(yè)數(shù)的pdf文件方法

    Python分割指定頁(yè)數(shù)的pdf文件方法

    今天小編就為大家分享一篇Python分割指定頁(yè)數(shù)的pdf文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 使用python對(duì)多個(gè)txt文件中的數(shù)據(jù)進(jìn)行篩選的方法

    使用python對(duì)多個(gè)txt文件中的數(shù)據(jù)進(jìn)行篩選的方法

    今天小編就為大家分享一篇使用python對(duì)多個(gè)txt文件中的數(shù)據(jù)進(jìn)行篩選的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python實(shí)現(xiàn)簡(jiǎn)單反彈球游戲

    python實(shí)現(xiàn)簡(jiǎn)單反彈球游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單反彈球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python圖片文字識(shí)別與提取實(shí)戰(zhàn)記錄

    Python圖片文字識(shí)別與提取實(shí)戰(zhàn)記錄

    這篇文章主要介紹了Python圖片文字識(shí)別與提取的相關(guān)資料,本文介紹了如何安裝和配置OCR環(huán)境,包括安裝pytesseract擴(kuò)展包、窗口配套軟件以及配置環(huán)境變量,在完成環(huán)境搭建后,即可進(jìn)行圖片中文字的提取,需要的朋友可以參考下
    2024-09-09
  • pytest使用parametrize將參數(shù)化變量傳遞到fixture

    pytest使用parametrize將參數(shù)化變量傳遞到fixture

    這篇文章主要為大家介紹了pytest使用parametrize將參數(shù)化變量傳遞到fixture的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python如何把字典寫(xiě)入到CSV文件的方法示例

    Python如何把字典寫(xiě)入到CSV文件的方法示例

    這篇文章主要介紹了Python如何把字典寫(xiě)入到CSV文件的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python Pillow Image Invert

    Python Pillow Image Invert

    今天小編就為大家分享一篇關(guān)于Python Pillow Image Invert,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • pyqt5制作登錄窗口的詳細(xì)過(guò)程

    pyqt5制作登錄窗口的詳細(xì)過(guò)程

    這篇文章主要介紹了pyqt5制作登錄窗口的詳細(xì)過(guò)程,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 使用Python操作PDF文件

    使用Python操作PDF文件

    這篇文章介紹了Python操作PDF文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論