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

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>PyTorch教程3.5之線性回歸的簡潔實現

PyTorch教程3.5之線性回歸的簡潔實現

2023-06-05 | pdf | 0.22 MB | 次下載 | 免費

資料介紹

在過去的十年中,深度學習見證了某種形式的寒武紀大爆發。技術、應用和算法的絕對數量遠遠超過了前幾十年的進步。這是由于多種因素的偶然組合,其中之一是許多開源深度學習框架提供的強大的免費工具。Theano Bergstra等人,2010 年、DistBelief Dean等人,2012 年和 Caffe Jia等人,2014 年可以說代表了被廣泛采用的第一代此類模型。與 SN2 (Simulateur Neuristique) 等早期(開創性)作品相比 Bottou 和 Le Cun,1988,它提供了類似 Lisp 的編程體驗,現代框架提供了自動微分和 Python 的便利性。這些框架使我們能夠自動化和模塊化實現基于梯度的學習算法的重復性工作。

3.4 節中,我們僅依靠 (i) 張量進行數據存儲和線性代數;(ii) 計算梯度的自動微分。在實踐中,由于數據迭代器、損失函數、優化器和神經網絡層非常普遍,現代圖書館也為我們實現了這些組件。在本節中,我們將向您展示如何 使用深度學習框架的高級 API 簡潔地實現3.4 節中的線性回歸模型。

import numpy as np
import torch
from torch import nn
from d2l import torch as d2l
from mxnet import autograd, gluon, init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()
import jax
import optax
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 numpy as np
import tensorflow as tf
from d2l import tensorflow as d2l

3.5.1. 定義模型

當我們在第 3.4 節中從頭開始實現線性回歸時 ,我們明確定義了我們的模型參數并編寫了計算代碼以使用基本線性代數運算生成輸出。應該知道如何做到這一點。但是一旦您的模型變得更加復雜,并且一旦您幾乎每天都必須這樣做,您就會很高興獲得幫助。這種情況類似于從頭開始編寫自己的博客。做一兩次是有益和有益的,但如果你花一個月重新發明輪子,你將成為一個糟糕的 Web 開發人員。

對于標準操作,我們可以使用框架的預定義層,這使我們能夠專注于用于構建模型的層,而不用擔心它們的實現。回想一下圖 3.1.2中描述的單層網絡的架構該層稱為全連接層,因為它的每個輸入都通過矩陣向量乘法連接到它的每個輸出。

在 PyTorch 中,全連接層定義在LinearLazyLinear(自版本 1.8.0 起可用)類中。后者允許用戶指定輸出維度,而前者額外詢問有多少輸入進入該層。指定輸入形狀很不方便,這可能需要大量的計算(例如在卷積層中)。因此,為簡單起見,我們將盡可能使用此類“惰性”層。

class LinearRegression(d2l.Module): #@save
  """The linear regression model implemented with high-level APIs."""
  def __init__(self, lr):
    super().__init__()
    self.save_hyperparameters()
    self.net = nn.LazyLinear(1)
    self.net.weight.data.normal_(0, 0.01)
    self.net.bias.data.fill_(0)

In Gluon, the fully connected layer is defined in the Dense class. Since we only want to generate a single scalar output, we set that number to 1. It is worth noting that, for convenience, Gluon does not require us to specify the input shape for each layer. Hence we do not need to tell Gluon how many inputs go into this linear layer. When we first pass data through our model, e.g., when we execute net(X) later, Gluon will automatically infer the number of inputs to each layer and thus instantiate the correct model. We will describe how this works in more detail later.

class LinearRegression(d2l.Module): #@save
  """The linear regression model implemented with high-level APIs."""
  def __init__(self, lr):
    super().__init__()
    self.save_hyperparameters()
    self.net = nn.Dense(1)
    self.net.initialize(init.Normal(sigma=0.01))
class LinearRegression(d2l.Module): #@save
  """The linear regression model implemented with high-level APIs."""
  lr: float

  def setup(self):
    self.net = nn.Dense(1, kernel_init=nn.initializers.normal(0.01))

In Keras, the fully connected layer is defined in the Dense class. Since we only want to generate a single scalar output, we set that number to 1. It is worth noting that, for convenience, Keras does not require us to specify the input shape for each layer. We do not need to tell Keras how many inputs go into this linear layer. When we first try to pass data through our model, e.g., when we execute net(X) later, Keras will automatically infer the number of inputs to each layer. We will describe how this works in more detail later.

class LinearRegression(d2l.Module): #@save
  """The linear regression model implemented with high-level APIs."""
  def __init__(self, lr):
    super().__init__()
    self.save_hyperparameters()
    initializer = tf.initializers.RandomNormal(stddev=0.01)
    self.net = tf.keras.layers.Dense(1, kernel_initializer=initializer)

forward方法中,我們只調用預定義層的內置__call__ 方法來計算輸出。

@d2l.add_to_class(LinearRegression) #@save
def forward(self, X):
  return self.net(X)
@d2l.add_to_class(LinearRegression) #@save
def forward(self, X):
  return self.net(X)
@d2l.add_to_class(LinearRegression) #@save
def forward(self, X):
  return self.net(X)
@d2l.add_to_class(LinearRegression) #@save
def forward(self, X):
  return self.net(X)

3.5.2. 定義損失函數

該類MSELoss計算均方誤差(沒有 1/2(3.1.5)中的因素)。默認情況下,MSELoss 返回示例的平均損失。它比我們自己實現更快(也更容易使用)。

@d2l.add_to_class(LinearRegression) #@save
def loss(self, y_hat, y):
  fn = nn.MSELoss()
  return fn(y_hat, y)

The loss module defines many useful loss functions. For speed and convenience, we forgo implementing our own and choose the built-in loss.L2Loss instead. Because the loss that it returns is the squared error for each example, we use meanto average the loss across over the minibatch.

@d2l.add_to_class(LinearRegression) #@save
def loss(self, y_hat, y):
  fn = gluon.loss.L2Loss()
  return fn(y_hat, y).mean()
@d2l.add_to_class(LinearRegression) #@save
def loss(self, params, X, y, state):
  y_hat = state.apply_fn({'params': params}, *X)
  return optax.l2_loss(y_hat, y).mean()

The MeanSquaredError class computes the mean squared error (without the 1/2 factor in (3.1.5)). By default, it returns the average loss over examples.

@d2l.add_to_class(LinearRegression) #@save
def loss(self, y_hat, y):
  fn = tf.keras.losses.MeanSquaredError()
  return fn(y, y_hat)

3.5.3. 定義優化算法

Minibatch SGD 是用于優化神經網絡的標準工具,因此 PyTorch 支持它以及模塊中該算法的許多變體optim當我們實例化一個SGD實例時,我們指定要優化的參數,可通過 和我們的優化算法所需的self.parameters()學習率 ( ) 從我們的模型中獲得。self.lr


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

評論

查看更多

下載排行

本周

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

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 国产亚洲美女| 99久久婷婷国产综合精品电影| 天堂bt种子资源地址在线| 一级爱片| 色视频网站色视频播放| 日本永久免费| 久久国产色| 国产午夜视频在线观看| www.四虎在线| 在线看片福利| 日日操夜夜| 午夜免费福利网站| 天天操天| 99xxxx开心| 色视频一区二区三区| 国产精品任我爽爆在线播放6080| h在线观看网站| 开心激情五月婷婷| 亚洲色图综合图片| 57pao成人永久免费视频| 欧洲亚洲一区| 日本视频一区在线观看免费| av福利网址网站| 她也啪97在线视频| 伊人丁香婷婷综合一区二区| 亚洲欧美一区二区三区四区| 黄网站在线观看视频| 天天综合射| 久久久久免费精品国产| 亚洲色图17p| 大黄蕉| 久久精品福利| 91精品国产亚洲爽啪在线影院| 二区中文字幕| 日本免费精品视频| 成人国产精品一级毛片视频| 欧美高h| 亚洲一区二区三区网站| 亚洲日本欧美日韩高观看| 一级毛片 在线播放| 免费毛片大全|