吴忠躺衫网络科技有限公司

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

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

3天內(nèi)不再提示

PyTorch教程-4.4. 從頭開始實(shí)現(xiàn) Softmax 回歸

jf_pJlTbmA9 ? 來源:PyTorch ? 作者:PyTorch ? 2023-06-05 15:43 ? 次閱讀

因?yàn)?softmax 回歸是如此基礎(chǔ),我們相信您應(yīng)該知道如何自己實(shí)現(xiàn)它。在這里,我們限制自己定義模型的 softmax 特定方面,并重用線性回歸部分的其他組件,包括訓(xùn)練循環(huán)。

import torch
from d2l import torch as d2l

from mxnet import autograd, gluon, np, npx
from d2l import mxnet as d2l

npx.set_np()

from functools import partial
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
from d2l import tensorflow as d2l

4.4.1. Softmax

讓我們從最重要的部分開始:從標(biāo)量到概率的映射。作為復(fù)習(xí),請回憶一下在張量中沿特定維度的求和運(yùn)算符,如第 2.3.6 節(jié)和 第 2.3.7 節(jié)中所討論的。給定一個矩陣,X我們可以對所有元素(默認(rèn)情況下)或僅對同一軸上的元素求和。該axis變量讓我們計(jì)算行和列的總和:

X = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
X.sum(0, keepdims=True), X.sum(1, keepdims=True)

(tensor([[5., 7., 9.]]),
 tensor([[ 6.],
     [15.]]))

X = np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
X.sum(0, keepdims=True), X.sum(1, keepdims=True)

(array([[5., 7., 9.]]),
 array([[ 6.],
    [15.]]))

X = jnp.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
X.sum(0, keepdims=True), X.sum(1, keepdims=True)

(Array([[5., 7., 9.]], dtype=float32),
 Array([[ 6.],
    [15.]], dtype=float32))

X = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
tf.reduce_sum(X, 0, keepdims=True), tf.reduce_sum(X, 1, keepdims=True)

(,
 )

計(jì)算 softmax 需要三個步驟:(i)每一項(xiàng)取冪;(ii) 對每一行求和以計(jì)算每個示例的歸一化常數(shù);(iii) 將每一行除以其歸一化常數(shù),確保結(jié)果之和為 1。

(4.4.1)softmax(X)ij=exp?(Xij)∑kexp?(Xik).

分母的(對數(shù))稱為(對數(shù))配分函數(shù)。它是在統(tǒng)計(jì)物理學(xué)中引入的 ,用于對熱力學(xué)系綜中的所有可能狀態(tài)求和。實(shí)現(xiàn)很簡單:

def softmax(X):
  X_exp = torch.exp(X)
  partition = X_exp.sum(1, keepdims=True)
  return X_exp / partition # The broadcasting mechanism is applied here

def softmax(X):
  X_exp = np.exp(X)
  partition = X_exp.sum(1, keepdims=True)
  return X_exp / partition # The broadcasting mechanism is applied here

def softmax(X):
  X_exp = jnp.exp(X)
  partition = X_exp.sum(1, keepdims=True)
  return X_exp / partition # The broadcasting mechanism is applied here

def softmax(X):
  X_exp = tf.exp(X)
  partition = tf.reduce_sum(X_exp, 1, keepdims=True)
  return X_exp / partition # The broadcasting mechanism is applied here

對于任何輸入X,我們將每個元素變成一個非負(fù)數(shù)。每行總和為 1,這是概率所要求的。注意:上面的代碼對于非常大或非常小的參數(shù)并不穩(wěn)健。雖然這足以說明正在發(fā)生的事情,但您不應(yīng) 將此代碼逐字用于任何嚴(yán)肅的目的。深度學(xué)習(xí)框架內(nèi)置了這樣的保護(hù),我們將在未來使用內(nèi)置的 softmax。

X = torch.rand((2, 5))
X_prob = softmax(X)
X_prob, X_prob.sum(1)

(tensor([[0.1560, 0.2128, 0.2260, 0.2372, 0.1680],
     [0.1504, 0.2473, 0.1132, 0.2779, 0.2112]]),
 tensor([1.0000, 1.0000]))

X = np.random.rand(2, 5)
X_prob = softmax(X)
X_prob, X_prob.sum(1)

(array([[0.17777154, 0.1857739 , 0.20995119, 0.23887765, 0.18762572],
    [0.24042214, 0.1757977 , 0.23786479, 0.15572716, 0.19018826]]),
 array([1., 1.]))

X = jax.random.uniform(jax.random.PRNGKey(d2l.get_seed()), (2, 5))
X_prob = softmax(X)
X_prob, X_prob.sum(1)

(Array([[0.17380024, 0.13607854, 0.29826194, 0.18967763, 0.20218161],
    [0.24212085, 0.19360834, 0.21299706, 0.17635451, 0.17491929]],   dtype=float32),
 Array([1., 1.], dtype=float32))

X = tf.random.uniform((2, 5))
X_prob = softmax(X)
X_prob, tf.reduce_sum(X_prob, 1)

(,
 )

4.4.2. 該模型

我們現(xiàn)在擁有了實(shí)現(xiàn) softmax 回歸模型所需的一切。與我們的線性回歸示例一樣,每個實(shí)例都將由一個固定長度的向量表示。由于這里的原始數(shù)據(jù)包括28×28像素圖像,我們將每個圖像展平,將它們視為長度為 784 的向量。在后面的章節(jié)中,我們將介紹卷積神經(jīng)網(wǎng)絡(luò),它以更令人滿意的方式利用空間結(jié)構(gòu)。

在 softmax 回歸中,我們網(wǎng)絡(luò)的輸出數(shù)量應(yīng)該等于類的數(shù)量。由于我們的數(shù)據(jù)集有 10 個類,我們的網(wǎng)絡(luò)的輸出維度為 10。因此,我們的權(quán)重構(gòu)成784×10矩陣加一個1×10 偏差的維行向量。與線性回歸一樣,我們W使用高斯噪聲初始化權(quán)重。偏差被初始化為零。

class SoftmaxRegressionScratch(d2l.Classifier):
  def __init__(self, num_inputs, num_outputs, lr, sigma=0.01):
    super().__init__()
    self.save_hyperparameters()
    self.W = torch.normal(0, sigma, size=(num_inputs, num_outputs),
               requires_grad=True)
    self.b = torch.zeros(num_outputs, requires_grad=True)

  def parameters(self):
    return [self.W, self.b]

class SoftmaxRegressionScratch(d2l.Classifier):
  def __init__(self, num_inputs, num_outputs, lr, sigma=0.01):
    super().__init__()
    self.save_hyperparameters()
    self.W = np.random.normal(0, sigma, (num_inputs, num_outputs))
    self.b = np.zeros(num_outputs)
    self.W.attach_grad()
    self.b.attach_grad()

  def collect_params(self):
    return [self.W, self.b]

class SoftmaxRegressionScratch(d2l.Classifier):
  num_inputs: int
  num_outputs: int
  lr: float
  sigma: float = 0.01

  def setup(self):
    self.W = self.param('W', nn.initializers.normal(self.sigma),
              (self.num_inputs, self.num_outputs))
    self.b = self.param('b', nn.initializers.zeros, self.num_outputs)

class SoftmaxRegressionScratch(d2l.Classifier):
  def __init__(self, num_inputs, num_outputs, lr, sigma=0.01):
    super().__init__()
    self.save_hyperparameters()
    self.W = tf.random.normal((num_inputs, num_outputs), 0, sigma)
    self.b = tf.zeros(num_outputs)
    self.W = tf.Variable(self.W)
    self.b = tf.Variable(self.b)

下面的代碼定義了網(wǎng)絡(luò)如何將每個輸入映射到輸出。請注意,我們將每個28×28reshape在將數(shù)據(jù)傳遞給我們的模型之前,將批處理中的像素圖像轉(zhuǎn)換為向量。

@d2l.add_to_class(SoftmaxRegressionScratch)
def forward(self, X):
  X = X.reshape((-1, self.W.shape[0]))
  return softmax(torch.matmul(X, self.W) + self.b)

@d2l.add_to_class(SoftmaxRegressionScratch)
def forward(self, X):
  X = X.reshape((-1, self.W.shape[0]))
  return softmax(np.dot(X, self.W) + self.b)

@d2l.add_to_class(SoftmaxRegressionScratch)
def forward(self, X):
  X = X.reshape((-1, self.W.shape[0]))
  return softmax(jnp.matmul(X, self.W) + self.b)

@d2l.add_to_class(SoftmaxRegressionScratch)
def forward(self, X):
  X = tf.reshape(X, (-1, self.W.shape[0]))
  return softmax(tf.matmul(X, self.W) + self.b)

4.4.3. 交叉熵?fù)p失

接下來我們需要實(shí)現(xiàn)交叉熵?fù)p失函數(shù)( 4.1.2節(jié)介紹 )。這可能是所有深度學(xué)習(xí)中最常見的損失函數(shù)。目前,深度學(xué)習(xí)的應(yīng)用很容易拋出分類問題,遠(yuǎn)遠(yuǎn)超過那些更好地視為回歸問題的問題。

回想一下,交叉熵采用分配給真實(shí)標(biāo)簽的預(yù)測概率的負(fù)對數(shù)似然。為了提高效率,我們避免使用 Python for 循環(huán)并改用索引。特別是,one-hot 編碼y允許我們選擇匹配項(xiàng)y^.

為了在行動中看到這一點(diǎn),我們創(chuàng)建了樣本數(shù)據(jù),y_hat其中包含 3 個類及其對應(yīng)標(biāo)簽的 2 個預(yù)測概率示例 y。正確的標(biāo)簽是0和2分別(即一等和三等)。使用y中概率的指標(biāo)y_hat,我們可以有效地挑選出術(shù)語。

y = torch.tensor([0, 2])
y_hat = torch.tensor([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])
y_hat[[0, 1], y]

tensor([0.1000, 0.5000])

現(xiàn)在我們可以通過對所選概率的對數(shù)進(jìn)行平均來實(shí)現(xiàn)交叉熵?fù)p失函數(shù)。

def cross_entropy(y_hat, y):
  return -torch.log(y_hat[list(range(len(y_hat))), y]).mean()

cross_entropy(y_hat, y)

tensor(1.4979)

@d2l.add_to_class(SoftmaxRegressionScratch)
def loss(self, y_hat, y):
  return cross_entropy(y_hat, y)

y = np.array([0, 2])
y_hat = np.array([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])
y_hat[[0, 1], y]

array([0.1, 0.5])

Now we can implement the cross-entropy loss function by averaging over the logarithms of the selected probabilities.

def cross_entropy(y_hat, y):
  return -np.log(y_hat[list(range(len(y_hat))), y]).mean()

cross_entropy(y_hat, y)

array(1.4978662)

@d2l.add_to_class(SoftmaxRegressionScratch)
def loss(self, y_hat, y):
  return cross_entropy(y_hat, y)

y = jnp.array([0, 2])
y_hat = jnp.array([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])
y_hat[[0, 1], y]

Array([0.1, 0.5], dtype=float32)

Now we can implement the cross-entropy loss function by averaging over the logarithms of the selected probabilities.

Note that to make use of jax.jit to speed up JAX implementations, and to make sure loss is a pure function, the cross_entropy function is re-defined inside the loss to avoid usage of any global variables or functions which may render the loss function impure. We refer interested readers to the JAX documentation on jax.jit and pure functions.

def cross_entropy(y_hat, y):
  return -jnp.log(y_hat[list(range(len(y_hat))), y]).mean()

cross_entropy(y_hat, y)

Array(1.4978662, dtype=float32)

@d2l.add_to_class(SoftmaxRegressionScratch)
@partial(jax.jit, static_argnums=(0))
def loss(self, params, X, y, state):
  def cross_entropy(y_hat, y):
    return -jnp.log(y_hat[list(range(len(y_hat))), y]).mean()
  y_hat = state.apply_fn({'params': params}, *X)
  # The returned empty dictionary is a placeholder for auxiliary data,
  # which will be used later (e.g., for batch norm)
  return cross_entropy(y_hat, y), {}

y_hat = tf.constant([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])
y = tf.constant([0, 2])
tf.boolean_mask(y_hat, tf.one_hot(y, depth=y_hat.shape[-1]))


Now we can implement the cross-entropy loss function by averaging over the logarithms of the selected probabilities.

def cross_entropy(y_hat, y):
  return -tf.reduce_mean(tf.math.log(tf.boolean_mask(
    y_hat, tf.one_hot(y, depth=y_hat.shape[-1]))))

cross_entropy(y_hat, y)


@d2l.add_to_class(SoftmaxRegressionScratch)
def loss(self, y_hat, y):
  return cross_entropy(y_hat, y)

4.4.4. 訓(xùn)練

我們重用第 3.4 節(jié)fit中定義的方法來訓(xùn)練具有 10 個 epoch 的模型。請注意,時期數(shù) ( )、小批量大小 ( ) 和學(xué)習(xí)率 ( ) 都是可調(diào)整的超參數(shù)。這意味著雖然這些值不是在我們的主要訓(xùn)練循環(huán)中學(xué)習(xí)到的,但它們?nèi)匀粫绊懳覀兡P偷男阅堋ot vis-a-vis 訓(xùn)練和泛化性能。在實(shí)踐中,您將希望根據(jù)數(shù)據(jù)的驗(yàn)證拆分來選擇這些值,然后最終在測試拆分上評估您的最終模型。如第 3.6.3 節(jié)所述max_epochsbatch_sizelr,我們將 Fashion-MNIST 的測試數(shù)據(jù)視為驗(yàn)證集,從而報告此拆分的驗(yàn)證損失和驗(yàn)證準(zhǔn)確性。

data = d2l.FashionMNIST(batch_size=256)
model = SoftmaxRegressionScratch(num_inputs=784, num_outputs=10, lr=0.1)
trainer = d2l.Trainer(max_epochs=10)
trainer.fit(model, data)

pYYBAGR5VgqAExsFAAGKX8leS1k713.svg

data = d2l.FashionMNIST(batch_size=256)
model = SoftmaxRegressionScratch(num_inputs=784, num_outputs=10, lr=0.1)
trainer = d2l.Trainer(max_epochs=10)
trainer.fit(model, data)

poYBAGR5Vg2ABqK6AAGLB0Eidv0636.svg

data = d2l.FashionMNIST(batch_size=256)
model = SoftmaxRegressionScratch(num_inputs=784, num_outputs=10, lr=0.1)
trainer = d2l.Trainer(max_epochs=10)
trainer.fit(model, data)

pYYBAGR5Vg-AR9EdAAGLFkwOa9I235.svg

data = d2l.FashionMNIST(batch_size=256)
model = SoftmaxRegressionScratch(num_inputs=784, num_outputs=10, lr=0.1)
trainer = d2l.Trainer(max_epochs=10)
trainer.fit(model, data)

poYBAGR5VhKAbq3pAAGK_cjKgSM338.svg

4.4.5. 預(yù)言

現(xiàn)在訓(xùn)練已經(jīng)完成,我們的模型已準(zhǔn)備好對一些圖像進(jìn)行分類。

X, y = next(iter(data.val_dataloader()))
preds = model(X).argmax(axis=1)
preds.shape

torch.Size([256])

X, y = next(iter(data.val_dataloader()))
preds = model(X).argmax(axis=1)
preds.shape

(256,)

X, y = next(iter(data.val_dataloader()))
preds = model.apply({'params': trainer.state.params}, X).argmax(axis=1)
preds.shape

(256,)

X, y = next(iter(data.val_dataloader()))
preds = tf.argmax(model(X), axis=1)
preds.shape

TensorShape([256])

我們更感興趣的是我們標(biāo)記錯誤的圖像。我們通過將它們的實(shí)際標(biāo)簽(文本輸出的第一行)與模型的預(yù)測(文本輸出的第二行)進(jìn)行比較來可視化它們。

wrong = preds.type(y.dtype) != y
X, y, preds = X[wrong], y[wrong], preds[wrong]
labels = [a+'n'+b for a, b in zip(
  data.text_labels(y), data.text_labels(preds))]
data.visualize([X, y], labels=labels)

pYYBAGR5VhSAVqY4AAIFNGvzY-Q502.svg

wrong = preds.astype(y.dtype) != y
X, y, preds = X[wrong], y[wrong], preds[wrong]
labels = [a+'n'+b for a, b in zip(
  data.text_labels(y), data.text_labels(preds))]
data.visualize([X, y], labels=labels)

pYYBAGR5VheAX5-hAAHuRRk8q20818.svg

wrong = preds.astype(y.dtype) != y
X, y, preds = X[wrong], y[wrong], preds[wrong]
labels = [a+'n'+b for a, b in zip(
  data.text_labels(y), data.text_labels(preds))]
data.visualize([X, y], labels=labels)

poYBAGR5VhmABcT-AAIHlsNP9aI422.svg

wrong = tf.cast(preds, y.dtype) != y
X, y, preds = X[wrong], y[wrong], preds[wrong]
labels = [a+'n'+b for a, b in zip(
  data.text_labels(y), data.text_labels(preds))]
data.visualize([X, y], labels=labels)

pYYBAGR5VhuAKLrKAAIBilBL_jo766.svg

4.4.6. 概括

到目前為止,我們開始獲得解決線性回歸和分類問題的一些經(jīng)驗(yàn)。有了它,我們已經(jīng)達(dá)到了可以說是 1960-1970 年代統(tǒng)計(jì)建模的最先進(jìn)水平。在下一節(jié)中,我們將向您展示如何利用深度學(xué)習(xí)框架更有效地實(shí)施該模型。

4.4.7. 練習(xí)

在本節(jié)中,我們根據(jù) softmax 運(yùn)算的數(shù)學(xué)定義直接實(shí)現(xiàn)了 softmax 函數(shù)。如第 4.1 節(jié)所述,這會導(dǎo)致數(shù)值不穩(wěn)定。

測試如果softmax輸入的值為100?

測試如果softmax所有輸入中最大的小于?100?

通過查看相對于參數(shù)中最大條目的值來實(shí)施修復(fù)。

實(shí)現(xiàn)一個cross_entropy遵循交叉熵?fù)p失函數(shù)定義的函數(shù)∑iyilog?y^i.

在上面的代碼示例中嘗試一下。

為什么你認(rèn)為它運(yùn)行得更慢?

你應(yīng)該使用它嗎?在哪些情況下有意義?

你需要注意什么?提示:考慮對數(shù)的定義域。

返回最有可能的標(biāo)簽總是一個好主意嗎?例如,你會為了醫(yī)學(xué)診斷而這樣做嗎?你會如何嘗試解決這個問題?

假設(shè)我們要使用 softmax 回歸來根據(jù)某些特征預(yù)測下一個單詞。大詞匯量可能會帶來哪些問題?

試驗(yàn)上面代碼的超參數(shù)。尤其:

繪制驗(yàn)證損失如何隨著學(xué)習(xí)率的變化而變化。

當(dāng)您更改小批量大小時,驗(yàn)證和訓(xùn)練損失是否會發(fā)生變化?在看到效果之前,您需要多大或多小?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13361
  • Softmax
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2543
收藏 人收藏

    評論

    相關(guān)推薦

    如何使用和聲從頭開始設(shè)置HTTP服務(wù)?

    有沒有關(guān)于如何使用和聲從頭開始設(shè)置HTTP服務(wù)的最新教程/設(shè)置?(不是從演示項(xiàng)目開始
    發(fā)表于 04-08 09:39

    pytorch訓(xùn)練出來的模型參數(shù)保存為嵌入式C語言能夠調(diào)用形式的方法

    個線性回歸的簡單深度學(xué)習(xí)例子,輸入節(jié)點(diǎn)為1個,隱藏層10個節(jié)點(diǎn),輸出一個節(jié)點(diǎn)。relu用的是普通的,所以不需要參數(shù)。f = open('./w1.txt',mode = 'w+') #是創(chuàng)建一個txt文件。參數(shù) 'w+'的意思是如果存在該文件,則刪除內(nèi)容,從頭開始書寫,如
    發(fā)表于 12-15 06:57

    能否連接JTAG調(diào)試器并從頭開始對MCU進(jìn)行編程,因?yàn)镸CU上沒有舊代碼?

    我正在設(shè)計(jì)一個帶有 mimxrt1062 芯片的 PCB。我要把 JTAG 引腳拿出來。我能否連接 JTAG 調(diào)試器并從頭開始對 MCU 進(jìn)行編程,因?yàn)?MCU 上沒有舊代碼?有什么需要注意的嗎?
    發(fā)表于 05-12 06:20

    從頭開始構(gòu)建無人機(jī)

    電子發(fā)燒友網(wǎng)站提供《從頭開始構(gòu)建無人機(jī).zip》資料免費(fèi)下載
    發(fā)表于 11-22 10:35 ?1次下載
    <b class='flag-5'>從頭開始</b>構(gòu)建無人機(jī)

    如何從頭開始制作六足機(jī)器人

    電子發(fā)燒友網(wǎng)站提供《如何從頭開始制作六足機(jī)器人.zip》資料免費(fèi)下載
    發(fā)表于 11-23 09:53 ?2次下載
    如何<b class='flag-5'>從頭開始</b>制作六足機(jī)器人

    PyTorch教程3.1之線性回歸

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程3.1之線性回歸.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:30 ?0次下載
    <b class='flag-5'>PyTorch</b>教程3.1之線性<b class='flag-5'>回歸</b>

    PyTorch教程3.4之從頭開始執(zhí)行線性回歸

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程3.4之從頭開始執(zhí)行線性回歸.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:25 ?0次下載
    <b class='flag-5'>PyTorch</b>教程3.4之<b class='flag-5'>從頭開始</b>執(zhí)行線性<b class='flag-5'>回歸</b>

    PyTorch教程3.5之線性回歸的簡潔實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程3.5之線性回歸的簡潔實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:28 ?0次下載
    <b class='flag-5'>PyTorch</b>教程3.5之線性<b class='flag-5'>回歸</b>的簡潔<b class='flag-5'>實(shí)現(xiàn)</b>

    PyTorch教程4.1之Softmax回歸

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程4.1之Softmax回歸.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:46 ?0次下載
    <b class='flag-5'>PyTorch</b>教程4.1之<b class='flag-5'>Softmax</b><b class='flag-5'>回歸</b>

    PyTorch教程4.4從頭開始實(shí)現(xiàn)Softmax回歸

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程4.4從頭開始實(shí)現(xiàn)Softmax回歸.pdf》資料免費(fèi)下
    發(fā)表于 06-05 15:37 ?0次下載
    <b class='flag-5'>PyTorch</b>教程<b class='flag-5'>4.4</b>之<b class='flag-5'>從頭開始</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>Softmax</b><b class='flag-5'>回歸</b>

    PyTorch教程-3.4. 從頭開始執(zhí)行線性回歸

    在 SageMaker Studio Lab 中打開筆記本 我們現(xiàn)在準(zhǔn)備好通過線性回歸的全功能實(shí)現(xiàn)來工作。在本節(jié)中,我們將從頭開始實(shí)現(xiàn)整個方法,包括(i)模型;(ii) 損失函數(shù);(
    的頭像 發(fā)表于 06-05 15:38 ?531次閱讀
    <b class='flag-5'>PyTorch</b>教程-3.4. <b class='flag-5'>從頭開始</b>執(zhí)行線性<b class='flag-5'>回歸</b>

    PyTorch教程-4.1. Softmax 回歸

    在 SageMaker Studio Lab 中打開筆記本 在3.1 節(jié)中,我們介紹了線性回歸,在3.4 節(jié)中從頭開始實(shí)現(xiàn) ,并在3.5 節(jié)中再次使用深度學(xué)習(xí)框架的高級 API來完成繁重的工作
    的頭像 發(fā)表于 06-05 15:38 ?647次閱讀
    <b class='flag-5'>PyTorch</b>教程-4.1. <b class='flag-5'>Softmax</b> <b class='flag-5'>回歸</b>

    為什么從頭開始為汽車應(yīng)用設(shè)計(jì)IC很重要

    級和3級自動駕駛技術(shù)的好處,這些技術(shù)提供了部分到有條件的轉(zhuǎn)向,加速和制動自動化。反過來,這些技術(shù)又推動了對車內(nèi)半導(dǎo)體內(nèi)容的需求。本文將探討為什么從性能和安全角度出發(fā),從頭開始設(shè)計(jì)汽車IC比重新利用最初設(shè)計(jì)用于其他用途的芯片更好。
    的頭像 發(fā)表于 06-12 14:25 ?698次閱讀

    在Spartan 6 FPGA上從頭開始實(shí)現(xiàn)全加器

    電子發(fā)燒友網(wǎng)站提供《在Spartan 6 FPGA上從頭開始實(shí)現(xiàn)全加器.zip》資料免費(fèi)下載
    發(fā)表于 06-15 10:13 ?0次下載
    在Spartan 6 FPGA上<b class='flag-5'>從頭開始</b><b class='flag-5'>實(shí)現(xiàn)</b>全加器

    如何在PyTorch實(shí)現(xiàn)LeNet-5網(wǎng)絡(luò)

    等人提出,主要用于手寫數(shù)字識別任務(wù)(如MNIST數(shù)據(jù)集)。下面,我將詳細(xì)闡述如何在PyTorch從頭開始實(shí)現(xiàn)LeNet-5網(wǎng)絡(luò),包括網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)、參數(shù)初始化、前向傳播、損失函數(shù)選擇、優(yōu)化器配置以及訓(xùn)練流程等方面。
    的頭像 發(fā)表于 07-11 10:58 ?867次閱讀
    女神百家乐的玩法技巧和规则| 百家乐官网博赌场| 大发888怎么代充| 发中发百家乐官网的玩法技巧和规则| 六合彩天线宝宝| 真钱百家乐注册送| 百家乐官网路单之我见| 太阳城申博娱乐城| 百家乐官网全讯网2| 太子百家乐娱乐城| E世博百家乐官网的玩法技巧和规则 | 老钱庄百家乐的玩法技巧和规则 | 百家乐官网下| 365体育投注| 百家乐路单怎样| 至尊百家乐官网吕文婉| 皇冠赌球网| 金殿百家乐的玩法技巧和规则| 汇丰百家乐官网的玩法技巧和规则 | 德州扑克官网| 三公百家乐玩法| 罗浮宫百家乐官网的玩法技巧和规则| 百家乐官方网站| 乐天堂百家乐娱乐城| 怎么看百家乐官网的路| 百家乐官网注册就送| 大发888娱乐城888 bg| 澳门百家乐破解方法| 百家乐官网连锁| 百家乐官网玩法百科| 德州扑克高级教程| 钱隆百家乐智能| 百家乐官网网站源码| 襄樊市| 大发888娱乐城下| 免佣百家乐的玩法| 免费百家乐官网预测| 百家乐官网平台开户哪里优惠多| 京城国际| 大发888注册奖金| 网络百家乐打揽|