在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>PyTorch教程6.2之參數(shù)管理

PyTorch教程6.2之參數(shù)管理

2023-06-05 | pdf | 0.13 MB | 次下載 | 免費(fèi)

資料介紹

一旦我們選擇了一個(gè)架構(gòu)并設(shè)置了我們的超參數(shù),我們就進(jìn)入訓(xùn)練循環(huán),我們的目標(biāo)是找到最小化損失函數(shù)的參數(shù)值。訓(xùn)練后,我們將需要這些參數(shù)來進(jìn)行未來的預(yù)測。此外,我們有時(shí)會希望提取參數(shù)以在其他上下文中重用它們,將我們的模型保存到磁盤以便它可以在其他軟件中執(zhí)行,或者進(jìn)行檢查以期獲得科學(xué)理解。

大多數(shù)時(shí)候,我們將能夠忽略參數(shù)聲明和操作的具體細(xì)節(jié),依靠深度學(xué)習(xí)框架來完成繁重的工作。然而,當(dāng)我們遠(yuǎn)離具有標(biāo)準(zhǔn)層的堆疊架構(gòu)時(shí),我們有時(shí)需要陷入聲明和操作參數(shù)的困境。在本節(jié)中,我們將介紹以下內(nèi)容:

  • 訪問用于調(diào)試、診斷和可視化的參數(shù)。

  • 跨不同模型組件共享參數(shù)。

import torch
from torch import nn
from mxnet import init, np, npx
from mxnet.gluon import nn

npx.set_np()
import jax
from flax import linen as nn
from jax import numpy as jnp
from d2l import jax as d2l
No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)
import tensorflow as tf

我們首先關(guān)注具有一個(gè)隱藏層的 MLP。

net = nn.Sequential(nn.LazyLinear(8),
          nn.ReLU(),
          nn.LazyLinear(1))

X = torch.rand(size=(2, 4))
net(X).shape
torch.Size([2, 1])
net = nn.Sequential()
net.add(nn.Dense(8, activation='relu'))
net.add(nn.Dense(1))
net.initialize() # Use the default initialization method

X = np.random.uniform(size=(2, 4))
net(X).shape
(2, 1)
net = nn.Sequential([nn.Dense(8), nn.relu, nn.Dense(1)])

X = jax.random.uniform(d2l.get_key(), (2, 4))
params = net.init(d2l.get_key(), X)
net.apply(params, X).shape
(2, 1)
net = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(4, activation=tf.nn.relu),
  tf.keras.layers.Dense(1),
])

X = tf.random.uniform((2, 4))
net(X).shape
TensorShape([2, 1])

6.2.1. 參數(shù)訪問

讓我們從如何從您已知的模型中訪問參數(shù)開始。

當(dāng)通過類定義模型時(shí)Sequential,我們可以首先通過索引模型來訪問任何層,就好像它是一個(gè)列表一樣。每個(gè)層的參數(shù)都方便地位于其屬性中。

When a model is defined via the Sequential class, we can first access any layer by indexing into the model as though it were a list. Each layer’s parameters are conveniently located in its attribute.

Flax and JAX decouple the model and the parameters as you might have observed in the models defined previously. When a model is defined via the Sequential class, we first need to initialize the network to generate the parameters dictionary. We can access any layer’s parameters through the keys of this dictionary.

When a model is defined via the Sequential class, we can first access any layer by indexing into the model as though it were a list. Each layer’s parameters are conveniently located in its attribute.

我們可以如下檢查第二個(gè)全連接層的參數(shù)。

net[2].state_dict()
OrderedDict([('weight',
       tensor([[-0.2523, 0.2104, 0.2189, -0.0395, -0.0590, 0.3360, -0.0205, -0.1507]])),
       ('bias', tensor([0.0694]))])
net[1].params
dense1_ (
 Parameter dense1_weight (shape=(1, 8), dtype=float32)
 Parameter dense1_bias (shape=(1,), dtype=float32)
)
params['params']['layers_2']
FrozenDict({
  kernel: Array([[-0.20739523],
      [ 0.16546965],
      [-0.03713543],
      [-0.04860032],
      [-0.2102929 ],
      [ 0.163712 ],
      [ 0.27240783],
      [-0.4046879 ]], dtype=float32),
  bias: Array([0.], dtype=float32),
})
net.layers[2].weights
[<tf.Variable 'dense_1/kernel:0' shape=(4, 1) dtype=float32, numpy=
 array([[-0.52124995],
    [-0.22314149],
    [ 0.20780373],
    [ 0.6839919 ]], dtype=float32)>,
 <tf.Variable 'dense_1/bias:0' shape=(1,) dtype=float32, numpy=array([0.], dtype=float32)>]

我們可以看到這個(gè)全連接層包含兩個(gè)參數(shù),分別對應(yīng)于該層的權(quán)重和偏差。

6.2.1.1. 目標(biāo)參數(shù)

請注意,每個(gè)參數(shù)都表示為參數(shù)類的一個(gè)實(shí)例。要對參數(shù)做任何有用的事情,我們首先需要訪問基礎(chǔ)數(shù)值。做這件事有很多種方法。有些更簡單,有些則更通用。以下代碼從返回參數(shù)類實(shí)例的第二個(gè)神經(jīng)網(wǎng)絡(luò)層中提取偏差,并進(jìn)一步訪問該參數(shù)的值。

type(net[2].bias), net[2].bias.data
(torch.nn.parameter.Parameter, tensor([0.0694]))

參數(shù)是復(fù)雜的對象,包含值、梯度和附加信息這就是為什么我們需要顯式請求該值。

除了值之外,每個(gè)參數(shù)還允許我們訪問梯度。因?yàn)槲覀冞€沒有為這個(gè)網(wǎng)絡(luò)調(diào)用反向傳播,所以它處于初始狀態(tài)。

net[2].weight.grad == None
True
type(net[1].bias), net[1].bias.data()
(mxnet.gluon.parameter.Parameter, array([0.]))

Parameters are complex objects, containing values, gradients, and additional information. That is why we need to request the value explicitly.

In addition to the value, each parameter also allows us to access the gradient. Because we have not invoked backpropagation for this network yet, it is in its initial state.

net[1].weight.grad()
array([[0., 0., 0., 0., 0., 0., 0., 0.]])
bias = params['params']['layers_2']['bias']
type(bias), bias
(jaxlib.xla_extension.Array, Array([0.], dtype=float32))

Unlike the other frameworks, JAX does not keep a track of the gradients over the neural network parameters, instead the parameters and the network are decoupled. It allows the user to express their computation as a Python function, and use the grad transformation for the same purpose.

type(net.layers[2].weights[1]), tf.convert_to_tensor(net.layers[2].weights[1])
(tensorflow.python.ops.resource_variable_ops.ResourceVariable,
 <tf.Tensor: shape=(1,), dtype=float32, numpy=array([0.], dtype=float32)>)

6.2.1.2. 一次所有參數(shù)

當(dāng)我們需要對所有參數(shù)執(zhí)行操作時(shí),一個(gè)一個(gè)地訪問它們會變得乏味。當(dāng)我們使用更復(fù)雜的模塊(例如,嵌套模塊)時(shí),情況會變得特別笨拙,因?yàn)槲覀冃枰f歸遍歷整個(gè)樹以提取每個(gè)子模塊的參數(shù)。下面我們演示訪問所有層的參數(shù)。

[(name, param.shape) for name, param in net.named_parameters()]
[('0.weight', torch

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 狠狠色噜噜狠狠狠狠2021天天 | 午夜免费观看福利片一区二区三区 | 国产亚洲精品久久久久久午夜 | 欧美社区| 日本精品视频四虎在线观看 | 永久网站色视频在线观看免费 | a一级视频| 色视频在线免费看 | 啪啪福利视频 | 午夜影院普通用户体验区 | 男人天堂资源网 | 欧美色综合高清视频在线 | 午夜高清免费观看视频 | 亚洲天天做日日做天天看2018 | 婷婷性 | 亚洲成a人片在线网站 | 亚洲成a人不卡在线观看 | 日本人六九视频69jzz免费 | 亚洲综合色网 | 在线视频网址免费播放 | nxgx欧美| 日本久久综合视频 | 五月天激情在线 | 色色色色色色网 | 色亚洲色图 | 绝色村妇的泛滥春情 | 加勒比一本一道在线 | 奇米888在线看奇米999 | 欧美啪啪精品 | 狠狠狠狠狠操 | 国产成人综合亚洲怡春院 | 欧美人与动性行为网站免费 | 黄色天天影视 | 午夜在线视频观看版 | 国产免费高清福利拍拍拍 | h网站在线播放 | 欧美日韩国产另类一区二区三区 | 日本四虎影院 | 1000部啪啪勿入十八免费 | 三级网站免费看 | 午夜 在线播放 |