哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

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

jf_pJlTbmA9 ? 來源:PyTorch ? 作者:PyTorch ? 2023-06-05 15:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們現(xiàn)在準(zhǔn)備好通過線性回歸的全功能實(shí)現(xiàn)來工作。在本節(jié)中,我們將從頭開始實(shí)現(xiàn)整個(gè)方法,包括(i)模型;(ii) 損失函數(shù);(iii) 小批量隨機(jī)梯度下降優(yōu)化器;(iv) 將所有這些部分拼接在一起的訓(xùn)練功能。最后,我們將運(yùn)行3.3 節(jié)中的合成數(shù)據(jù)生成器 并將我們的模型應(yīng)用于生成的數(shù)據(jù)集。雖然現(xiàn)代深度學(xué)習(xí)框架幾乎可以自動(dòng)執(zhí)行所有這些工作,但從頭開始實(shí)施是確保您真正了解自己在做什么的唯一方法。此外,當(dāng)需要自定義模型、定義我們自己的層或損失函數(shù)時(shí),了解引擎蓋下的工作原理將很方便。在本節(jié)中,我們將僅依賴張量和自動(dòng)微分。稍后,我們將介紹一個(gè)更簡潔的實(shí)現(xiàn),利用深度學(xué)習(xí)框架的花哨功能,同時(shí)保留以下結(jié)構(gòu)。

%matplotlib inline
import torch
from d2l import torch as d2l

%matplotlib inline
from mxnet import autograd, np, npx
from d2l import mxnet as d2l

npx.set_np()

%matplotlib inline
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.)

%matplotlib inline
import tensorflow as tf
from d2l import tensorflow as d2l

3.4.1. 定義模型

在我們開始通過小批量 SGD 優(yōu)化模型參數(shù)之前,我們首先需要有一些參數(shù)。在下文中,我們通過從均值為 0 且標(biāo)準(zhǔn)差為 0.01 的正態(tài)分布中抽取隨機(jī)數(shù)來初始化權(quán)重?;脭?shù) 0.01 在實(shí)踐中通常效果很好,但您可以通過參數(shù)指定不同的值sigma。此外,我們將偏差設(shè)置為 0。注意,對(duì)于面向?qū)ο蟮脑O(shè)計(jì),我們將代碼添加到__init__子類的方法中(在3.2.2 節(jié)d2l.Module中介紹 )。

class LinearRegressionScratch(d2l.Module): #@save
  """The linear regression model implemented from scratch."""
  def __init__(self, num_inputs, lr, sigma=0.01):
    super().__init__()
    self.save_hyperparameters()
    self.w = torch.normal(0, sigma, (num_inputs, 1), requires_grad=True)
    self.b = torch.zeros(1, requires_grad=True)

class LinearRegressionScratch(d2l.Module): #@save
  """The linear regression model implemented from scratch."""
  def __init__(self, num_inputs, lr, sigma=0.01):
    super().__init__()
    self.save_hyperparameters()
    self.w = np.random.normal(0, sigma, (num_inputs, 1))
    self.b = np.zeros(1)
    self.w.attach_grad()
    self.b.attach_grad()

class LinearRegressionScratch(d2l.Module): #@save
  """The linear regression model implemented from scratch."""
  num_inputs: int
  lr: float
  sigma: float = 0.01

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

class LinearRegressionScratch(d2l.Module): #@save
  """The linear regression model implemented from scratch."""
  def __init__(self, num_inputs, lr, sigma=0.01):
    super().__init__()
    self.save_hyperparameters()
    w = tf.random.normal((num_inputs, 1), mean=0, stddev=0.01)
    b = tf.zeros(1)
    self.w = tf.Variable(w, trainable=True)
    self.b = tf.Variable(b, trainable=True)

接下來,我們必須定義我們的模型,將其輸入和參數(shù)與其輸出相關(guān)聯(lián)。在(3.1.4)中使用相同的符號(hào),對(duì)于我們的線性模型,我們簡單地采用輸入特征的矩陣向量乘積X和模型權(quán)重w,并加上偏移量b每個(gè)例子。Xw是一個(gè)向量并且b是一個(gè)標(biāo)量。由于廣播機(jī)制(參見 第 2.1.4 節(jié)),當(dāng)我們添加一個(gè)向量和一個(gè)標(biāo)量時(shí),標(biāo)量將添加到向量的每個(gè)分量。生成的 方法 通過(在第 3.2.1 節(jié)中介紹 )forward在類中注冊。LinearRegressionScratchadd_to_class

@d2l.add_to_class(LinearRegressionScratch) #@save
def forward(self, X):
  return torch.matmul(X, self.w) + self.b

@d2l.add_to_class(LinearRegressionScratch) #@save
def forward(self, X):
  return np.dot(X, self.w) + self.b

@d2l.add_to_class(LinearRegressionScratch) #@save
def forward(self, X):
  return jnp.matmul(X, self.w) + self.b

@d2l.add_to_class(LinearRegressionScratch) #@save
def forward(self, X):
  return tf.matmul(X, self.w) + self.b

3.4.2. 定義損失函數(shù)

由于更新我們的模型需要采用損失函數(shù)的梯度,因此我們應(yīng)該首先定義損失函數(shù)。這里我們使用(3.1.5)中的平方損失函數(shù)。在實(shí)現(xiàn)中,我們需要將真實(shí)值轉(zhuǎn)換y為預(yù)測值的形狀 y_hat。以下方法返回的結(jié)果也將具有與y_hat. 我們還返回小批量中所有示例的平均損失值。

@d2l.add_to_class(LinearRegressionScratch) #@save
def loss(self, y_hat, y):
  l = (y_hat - y) ** 2 / 2
  return l.mean()

@d2l.add_to_class(LinearRegressionScratch) #@save
def loss(self, y_hat, y):
  l = (y_hat - y) ** 2 / 2
  return l.mean()

@d2l.add_to_class(LinearRegressionScratch) #@save
def loss(self, params, X, y, state):
  y_hat = state.apply_fn({'params': params}, *X) # X unpacked from a tuple
  l = (y_hat - y.reshape(y_hat.shape)) ** 2 / 2
  return l.mean()

@d2l.add_to_class(LinearRegressionScratch) #@save
def loss(self, y_hat, y):
  l = (y_hat - y) ** 2 / 2
  return tf.reduce_mean(l)

3.4.3. 定義優(yōu)化算法

正如第 3.1 節(jié)中所討論的,線性回歸有一個(gè)封閉形式的解決方案。然而,我們這里的目標(biāo)是說明如何訓(xùn)練更通用的神經(jīng)網(wǎng)絡(luò),這需要我們教您如何使用小批量 SGD。因此,我們將借此機(jī)會(huì)介紹您的第一個(gè) SGD 工作示例。在每一步,使用從我們的數(shù)據(jù)集中隨機(jī)抽取的小批量,我們估計(jì)損失相對(duì)于參數(shù)的梯度。接下來,我們朝著可能減少損失的方向更新參數(shù)。

以下代碼應(yīng)用更新,給定一組參數(shù),一個(gè)學(xué)習(xí)率lr。由于我們的損失是按小批量的平均值計(jì)算的,因此我們不需要根據(jù)批量大小調(diào)整學(xué)習(xí)率。在后面的章節(jié)中,我們將研究如何為分布式大規(guī)模學(xué)習(xí)中出現(xiàn)的非常大的小批量調(diào)整學(xué)習(xí)率?,F(xiàn)在,我們可以忽略這種依賴性。

我們定義我們的SGD類,它是d2l.HyperParameters (在第 3.2.1 節(jié)中介紹的)的一個(gè)子類,以具有與內(nèi)置 SGD 優(yōu)化器類似的 API。我們更新方法中的參數(shù)step 。該zero_grad方法將所有梯度設(shè)置為 0,這必須在反向傳播步驟之前運(yùn)行。

class SGD(d2l.HyperParameters): #@save
  """Minibatch stochastic gradient descent."""
  def __init__(self, params, lr):
    self.save_hyperparameters()

  def step(self):
    for param in self.params:
      param -= self.lr * param.grad

  def zero_grad(self):
    for param in self.params:
      if param.grad is not None:
        param.grad.zero_()

We define our SGD class, a subclass of d2l.HyperParameters (introduced in Section 3.2.1), to have a similar API as the built-in SGD optimizer. We update the parameters in the step method. It accepts a batch_size argument that can be ignored.

class SGD(d2l.HyperParameters): #@save
  """Minibatch stochastic gradient descent."""
  def __init__(self, params, lr):
    self.save_hyperparameters()

  def step(self, _):
    for param in self.params:
      param -= self.lr * param.grad

class SGD(d2l.HyperParameters): #@save
  """Minibatch stochastic gradient descent."""
  # The key transformation of Optax is the GradientTransformation
  # defined by two methods, the init and the update.
  # The init initializes the state and the update transforms the gradients.
  # https://github.com/deepmind/optax/blob/master/optax/_src/transform.py
  def __init__(self, lr):
    self.save_hyperparameters()

  def init(self, params):
    # Delete unused params
    del params
    return optax.EmptyState

  def update(self, updates, state, params=None):
    del params
    # When state.apply_gradients method is called to update flax's
    # train_state object, it internally calls optax.apply_updates method
    # adding the params to the update equation defined below.
    updates = jax.tree_util.tree_map(lambda g: -self.lr * g, updates)
    return updates, state

  def __call__():
    return optax.GradientTransformation(self.init, self.update)

We define our SGD class, a subclass of d2l.HyperParameters (introduced in Section 3.2.1), to have a similar API as the built-in SGD optimizer. We update the parameters in the apply_gradients method. It accepts a list of parameter and gradient pairs.

class SGD(d2l.HyperParameters): #@save
  """Minibatch stochastic gradient descent."""
  def __init__(self, lr):
    self.save_hyperparameters()

  def apply_gradients(self, grads_and_vars):
    for grad, param in grads_and_vars:
      param.assign_sub(self.lr * grad)

接下來我們定義configure_optimizers方法,它返回類的一個(gè)實(shí)例SGD。

@d2l.add_to_class(LinearRegressionScratch) #@save
def configure_optimizers(self):
  return SGD([self.w, self.b], self.lr)

@d2l.add_to_class(LinearRegressionScratch) #@save
def configure_optimizers(self):
  return SGD([self.w, self.b], self.lr)

@d2l.add_to_class(LinearRegressionScratch) #@save
def configure_optimizers(self):
  return SGD(self.lr)

@d2l.add_to_class(LinearRegressionScratch) #@save
def configure_optimizers(self):
  return SGD(self.lr)

3.4.4. 訓(xùn)練

現(xiàn)在我們已經(jīng)準(zhǔn)備好所有的部分(參數(shù)、損失函數(shù)、模型和優(yōu)化器),我們準(zhǔn)備好實(shí)施主要的訓(xùn)練循環(huán)。理解這段代碼至關(guān)重要,因?yàn)槟鷮?duì)本書涵蓋的所有其他深度學(xué)習(xí)模型使用類似的訓(xùn)練循環(huán)。在每個(gè)epoch中,我們遍歷整個(gè)訓(xùn)練數(shù)據(jù)集,通過每個(gè)示例一次(假設(shè)示例的數(shù)量可以被批量大小整除)。在每次迭代中,我們獲取一小批訓(xùn)練示例,并通過模型的 training_step方法計(jì)算其損失。接下來,我們計(jì)算每個(gè)參數(shù)的梯度。最后,我們將調(diào)用優(yōu)化算法來更新模型參數(shù)??傊?,我們將執(zhí)行以下循環(huán):

初始化參數(shù)(w,b)

重復(fù)直到完成

計(jì)算梯度 g←?(w,b)1|B|∑i∈Bl(x(i),y(i),w,b)

更新參數(shù) (w,b)←(w,b)?ηg

回想一下,我們在3.3 節(jié)中生成的綜合回歸數(shù)據(jù)集 不提供驗(yàn)證數(shù)據(jù)集。然而,在大多數(shù)情況下,我們將使用驗(yàn)證數(shù)據(jù)集來衡量我們的模型質(zhì)量。在這里,我們在每個(gè)時(shí)期通過一次驗(yàn)證數(shù)據(jù)加載器來衡量模型性能。按照我們的面向?qū)ο笤O(shè)計(jì),prepare_batch和fit_epoch方法注冊在d2l.Trainer類中(在 3.2.4 節(jié)中介紹)。

@d2l.add_to_class(d2l.Trainer) #@save
def prepare_batch(self, batch):
  return batch

@d2l.add_to_class(d2l.Trainer) #@save
def fit_epoch(self):
  self.model.train()
  for batch in self.train_dataloader:
    loss = self.model.training_step(self.prepare_batch(batch))
    self.optim.zero_grad()
    with torch.no_grad():
      loss.backward()
      if self.gradient_clip_val > 0: # To be discussed later
        self.clip_gradients(self.gradient_clip_val, self.model)
      self.optim.step()
    self.train_batch_idx += 1
  if self.val_dataloader is None:
    return
  self.model.eval()
  for batch in self.val_dataloader:
    with torch.no_grad():
      self.model.validation_step(self.prepare_batch(batch))
    self.val_batch_idx += 1

@d2l.add_to_class(d2l.Trainer) #@save
def prepare_batch(self, batch):
  return batch

@d2l.add_to_class(d2l.Trainer) #@save
def fit_epoch(self):
  for batch in self.train_dataloader:
    with autograd.record():
      loss = self.model.training_step(self.prepare_batch(batch))
    loss.backward()
    if self.gradient_clip_val > 0:
      self.clip_gradients(self.gradient_clip_val, self.model)
    self.optim.step(1)
    self.train_batch_idx += 1
  if self.val_dataloader is None:
    return
  for batch in self.val_dataloader:
    self.model.validation_step(self.prepare_batch(batch))
    self.val_batch_idx += 1

@d2l.add_to_class(d2l.Trainer) #@save
def prepare_batch(self, batch):
  return batch

@d2l.add_to_class(d2l.Trainer) #@save
def fit_epoch(self):
  self.model.training = True
  if self.state.batch_stats:
    # Mutable states will be used later (e.g., for batch norm)
    for batch in self.train_dataloader:
      (_, mutated_vars), grads = self.model.training_step(self.state.params,
                              self.prepare_batch(batch),
                              self.state)
      self.state = self.state.apply_gradients(grads=grads)
      # Can be ignored for models without Dropout Layers
      self.state = self.state.replace(
        dropout_rng=jax.random.split(self.state.dropout_rng)[0])
      self.state = self.state.replace(batch_stats=mutated_vars['batch_stats'])
      self.train_batch_idx += 1
  else:
    for batch in self.train_dataloader:
      _, grads = self.model.training_step(self.state.params,
                        self.prepare_batch(batch),
                        self.state)
      self.state = self.state.apply_gradients(grads=grads)
      # Can be ignored for models without Dropout Layers
      self.state = self.state.replace(
        dropout_rng=jax.random.split(self.state.dropout_rng)[0])
      self.train_batch_idx += 1

  if self.val_dataloader is None:
    return
  self.model.training = False
  for batch in self.val_dataloader:
    self.model.validation_step(self.state.params,
                  self.prepare_batch(batch),
                  self.state)
    self.val_batch_idx += 1

@d2l.add_to_class(d2l.Trainer) #@save
def prepare_batch(self, batch):
  return batch

@d2l.add_to_class(d2l.Trainer) #@save
def fit_epoch(self):
  self.model.training = True
  for batch in self.train_dataloader:
    with tf.GradientTape() as tape:
      loss = self.model.training_step(self.prepare_batch(batch))
    grads = tape.gradient(loss, self.model.trainable_variables)
    if self.gradient_clip_val > 0:
      grads = self.clip_gradients(self.gradient_clip_val, grads)
    self.optim.apply_gradients(zip(grads, self.model.trainable_variables))
    self.train_batch_idx += 1
  if self.val_dataloader is None:
    return
  self.model.training = False
  for batch in self.val_dataloader:
    self.model.validation_step(self.prepare_batch(batch))
    self.val_batch_idx += 1

我們幾乎準(zhǔn)備好訓(xùn)練模型,但首先我們需要一些數(shù)據(jù)來訓(xùn)練。這里我們使用SyntheticRegressionData類并傳入一些基本參數(shù)。然后,我們用學(xué)習(xí)率訓(xùn)練我們的模型lr=0.03并設(shè)置max_epochs=3。請(qǐng)注意,一般來說,epoch 的數(shù)量和學(xué)習(xí)率都是超參數(shù)。一般來說,設(shè)置超參數(shù)很棘手,我們通常希望使用 3 路分割,一組用于訓(xùn)練,第二組用于超參數(shù)選擇,第三組保留用于最終評(píng)估。我們暫時(shí)省略這些細(xì)節(jié),但稍后會(huì)對(duì)其進(jìn)行修改。

model = LinearRegressionScratch(2, lr=0.03)
data = d2l.SyntheticRegressionData(w=torch.tensor([2, -3.4]), b=4.2)
trainer = d2l.Trainer(max_epochs=3)
trainer.fit(model, data)

poYBAGR5VHCAUsTJAADw2MzPvpA901.svg

model = LinearRegressionScratch(2, lr=0.03)
data = d2l.SyntheticRegressionData(w=np.array([2, -3.4]), b=4.2)
trainer = d2l.Trainer(max_epochs=3)
trainer.fit(model, data)

pYYBAGR5VHKARTk0AADw0FVcGlM047.svg

model = LinearRegressionScratch(2, lr=0.03)
data = d2l.SyntheticRegressionData(w=jnp.array([2, -3.4]), b=4.2)
trainer = d2l.Trainer(max_epochs=3)
trainer.fit(model, data)

poYBAGR5VHSAcQY3AADwXIN0FX8181.svg

model = LinearRegressionScratch(2, lr=0.03)
data = d2l.SyntheticRegressionData(w=tf.constant([2, -3.4]), b=4.2)
trainer = d2l.Trainer(max_epochs=3)
trainer.fit(model, data)

pYYBAGR5VHeAcRCzAADwdvmdkmw109.svg

因?yàn)槲覀冏约汉铣闪藬?shù)據(jù)集,所以我們確切地知道真正的參數(shù)是什么。因此,我們可以通過將真實(shí)參數(shù)與我們通過訓(xùn)練循環(huán)學(xué)到的參數(shù)進(jìn)行比較來評(píng)估我們在訓(xùn)練中的成功。事實(shí)上,他們彼此非常接近。

print(f'error in estimating w: {data.w - model.w.reshape(data.w.shape)}')
print(f'error in estimating b: {data.b - model.b}')

error in estimating w: tensor([ 0.1006, -0.1535], grad_fn=)
error in estimating b: tensor([0.2132], grad_fn=)

print(f'error in estimating w: {data.w - model.w.reshape(data.w.shape)}')
print(f'error in estimating b: {data.b - model.b}')

error in estimating w: [ 0.10755348 -0.13104177]
error in estimating b: [0.18908024]

params = trainer.state.params
print(f"error in estimating w: {data.w - params['w'].reshape(data.w.shape)}")
print(f"error in estimating b: {data.b - params['b']}")

error in estimating w: [ 0.06764424 -0.183249 ]
error in estimating b: [0.23523378]

print(f'error in estimating w: {data.w - tf.reshape(model.w, data.w.shape)}')
print(f'error in estimating b: {data.b - model.b}')

error in estimating w: [ 0.08918679 -0.11773038]
error in estimating b: [0.211231]

我們不應(yīng)該把準(zhǔn)確恢復(fù)地面實(shí)況參數(shù)的能力視為理所當(dāng)然。一般來說,對(duì)于深度模型,參數(shù)的唯一解是不存在的,即使對(duì)于線性模型,只有當(dāng)沒有特征與其他特征線性相關(guān)時(shí),才有可能準(zhǔn)確地恢復(fù)參數(shù)。然而,在機(jī)器學(xué)習(xí)中,我們通常不太關(guān)心恢復(fù)真正的底層參數(shù),而更關(guān)心導(dǎo)致高度準(zhǔn)確預(yù)測的參數(shù) ( Vapnik, 1992 )。幸運(yùn)的是,即使在困難的優(yōu)化問題上,隨機(jī)梯度下降通常也能找到非常好的解決方案,部分原因在于,對(duì)于深度網(wǎng)絡(luò),存在許多導(dǎo)致高精度預(yù)測的參數(shù)配置。

3.4.5. 概括

在本節(jié)中,我們通過實(shí)施功能齊全的神經(jīng)網(wǎng)絡(luò)模型和訓(xùn)練循環(huán),朝著設(shè)計(jì)深度學(xué)習(xí)系統(tǒng)邁出了重要一步。在這個(gè)過程中,我們構(gòu)建了數(shù)據(jù)加載器、模型、損失函數(shù)、優(yōu)化程序以及可視化和監(jiān)控工具。為此,我們編寫了一個(gè) Python 對(duì)象,其中包含用于訓(xùn)練模型的所有相關(guān)組件。雖然這還不是專業(yè)級(jí)的實(shí)現(xiàn),但它具有完美的功能,并且像這樣的代碼已經(jīng)可以幫助您快速解決小問題。在接下來的部分中,我們將看到如何更簡潔 (避免樣板代碼)和更高效(充分利用我們的 GPU)。

3.4.6. 練習(xí)

如果我們將權(quán)重初始化為零會(huì)發(fā)生什么。該算法仍然有效嗎?如果我們用方差初始化參數(shù)會(huì)怎樣1,000而不是0.01?

假設(shè)您是Georg Simon Ohm,正在嘗試建立一個(gè)與電壓和電流相關(guān)的電阻器模型。您可以使用自動(dòng)微分來學(xué)習(xí)模型的參數(shù)嗎?

你能用普朗克定律通過光譜能量密度來確定物體的溫度嗎?作為參考,光譜密度B從黑體發(fā)出的輻射是 B(λ,T)=2hc2λ5?(exp?hcλkT?1)?1. 這里λ是波長,T是溫度, c是光速,h是普朗克量子,并且 k是玻爾茲曼常數(shù)。您測量不同波長的能量λ現(xiàn)在您需要使譜密度曲線符合普朗克定律。

如果你想計(jì)算損失的二階導(dǎo)數(shù),你可能會(huì)遇到什么問題?你會(huì)如何修復(fù)它們?

為什么函數(shù)reshape中需要方法loss?

嘗試使用不同的學(xué)習(xí)率來找出損失函數(shù)值下降的速度。你能通過增加訓(xùn)練的次數(shù)來減少錯(cuò)誤嗎?

如果樣本數(shù)不能除以批量大小,那么在data_iter一個(gè)紀(jì)元結(jié)束時(shí)會(huì)發(fā)生什么?

嘗試實(shí)現(xiàn)不同的損失函數(shù),例如絕對(duì)值損失。(y_hat - d2l.reshape(y, y_hat.shape)).abs().sum()

檢查常規(guī)數(shù)據(jù)會(huì)發(fā)生什么。

如果您主動(dòng)擾亂某些條目,請(qǐng)檢查行為是否存在差異y, 例如 y5=10,000.

你能想出一個(gè)便宜的解決方案來結(jié)合平方損失和絕對(duì)值損失的最佳方面嗎?提示:如何避免非常大的梯度值?

為什么我們需要重新洗牌數(shù)據(jù)集?你能設(shè)計(jì)一個(gè)惡意數(shù)據(jù)集否則會(huì)破壞優(yōu)化算法的情況嗎?

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

    關(guān)注

    2

    文章

    813

    瀏覽量

    14917
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何讓Design Studio 3.6.3適用于 K144 開發(fā)板?

    \'ve followed the Getting Started and other tutorials but nothing ever seems to match how my software behaves. 有人可以從頭開始詳細(xì)解釋一下如何讓這個(gè)軟件適用于 K144 開發(fā)板嗎?????
    發(fā)表于 04-17 06:19

    線性回歸的類型和應(yīng)用

    線性回歸是一種統(tǒng)計(jì)建模方法,用來將連續(xù)響應(yīng)變量描述為一個(gè)或多個(gè)預(yù)測變量的函數(shù)。它有助于您理解和預(yù)測復(fù)雜系統(tǒng)的行為,或者分析試驗(yàn)、金融和生物數(shù)據(jù)。
    的頭像 發(fā)表于 03-13 10:20 ?251次閱讀
    <b class='flag-5'>線性</b><b class='flag-5'>回歸</b>的類型和應(yīng)用

    PyTorch 中RuntimeError分析

    \')# 執(zhí)行上采樣 x = x.to(torch.bfloat16)# 轉(zhuǎn)換回 BFloat16 方案2:升級(jí) PyTorch 版本 該問題在 PyTorch 2.1.0 及更高版本中得到了修復(fù)。你可以
    發(fā)表于 03-06 06:02

    Pytorch 與 Visionfive2 兼容嗎?

    Pytorch 與 Visionfive2 兼容嗎? $ pip3 install torch torchvision torchaudio --index-url https
    發(fā)表于 02-06 08:28

    AI峰會(huì)冰火兩重天:英特爾亮劍GPU挑戰(zhàn)英偉達(dá),黃仁勛怒懟AI代替軟件

    美東時(shí)間2月3日,在思科AI大會(huì)上,英偉達(dá)CEO黃仁勛和英特爾CEO陳立武接連放出了重磅消息。英特爾CEO陳立武宣布,已指派新任架構(gòu)師,準(zhǔn)備打造首款GPU。英偉達(dá)CEO黃仁勛表示,擔(dān)心人工智能會(huì)使軟件公司變得不重要是錯(cuò)誤的,人工智能系統(tǒng)的設(shè)計(jì)初衷是與現(xiàn)有軟件進(jìn)行協(xié)同,而不是從頭開始重建基本工具。
    的頭像 發(fā)表于 02-05 10:05 ?1.6w次閱讀
    AI峰會(huì)冰火兩重天:英特爾亮劍GPU挑戰(zhàn)英偉達(dá),黃仁勛怒懟AI代替軟件

    DRV2603:線性諧振執(zhí)行器的自動(dòng)共振檢測觸覺驅(qū)動(dòng)器的綜合解析

    DRV2603:線性諧振執(zhí)行器的自動(dòng)共振檢測觸覺驅(qū)動(dòng)器的綜合解析 在電子產(chǎn)品的觸覺反饋設(shè)計(jì)中,一款優(yōu)秀的觸覺驅(qū)動(dòng)器至關(guān)重要。TI公司的DRV2603就是這樣一款值得深入研究的產(chǎn)品,它專為解決驅(qū)動(dòng)線性
    的頭像 發(fā)表于 01-30 13:50 ?335次閱讀

    解讀SNx5DP149:3.4 Gbps DP++到HDMI的高性能Retimer

    解讀SNx5DP149:3.4 Gbps DP++到HDMI的高性能Retimer 在當(dāng)今的數(shù)字顯示領(lǐng)域,隨著高清、超高清顯示技術(shù)的不斷發(fā)展,對(duì)于高質(zhì)量、高速率視頻信號(hào)傳輸?shù)男枨笠踩找嬖鲩L
    的頭像 發(fā)表于 01-07 18:20 ?2128次閱讀

    MAX2645:3.4GHz - 3.8GHz SiGe低噪聲放大器/PA預(yù)驅(qū)動(dòng)器的卓越性能與應(yīng)用

    MAX2645:3.4GHz - 3.8GHz SiGe低噪聲放大器/PA預(yù)驅(qū)動(dòng)器的卓越性能與應(yīng)用 在無線通信和數(shù)字微波領(lǐng)域,對(duì)于高性能、高線性度和低噪聲放大器的需求日益增長。MAXIM推出
    的頭像 發(fā)表于 01-06 11:45 ?433次閱讀

    線性搜索與二分搜索介紹

    線性搜索(Linear Search):從數(shù)組的第一個(gè)元素開始,依次將當(dāng)前元素與目標(biāo)值進(jìn)行比較,直到找到目標(biāo)值或搜索完整個(gè)數(shù)組。 二分搜索(Binary Search):在有序數(shù)組中查找某一特定元素
    發(fā)表于 12-01 07:36

    3.4 至 3.8 GHz、100 W 緊湊型高功率 SPDT 開關(guān),帶集成驅(qū)動(dòng)器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()3.4 至 3.8 GHz、100 W 緊湊型高功率 SPDT 開關(guān),帶集成驅(qū)動(dòng)器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有3.4 至 3.8 GHz、100 W 緊湊型高功率 SPDT
    發(fā)表于 10-27 18:29
    <b class='flag-5'>3.4</b> 至 3.8 GHz、100 W 緊湊型高功率 SPDT 開關(guān),帶集成驅(qū)動(dòng)器 skyworksinc

    文件系統(tǒng)的文件怎么循環(huán)覆蓋的寫入數(shù)據(jù)?

    請(qǐng)教一個(gè)文件系統(tǒng)數(shù)據(jù)寫入的問題。 比如我新建一個(gè)文件,test.txt,寫入數(shù)據(jù)超過512KB后,就從頭開始寫,后面的數(shù)據(jù)不刪除,從頭開始覆蓋。 比如原來寫了1000條數(shù)據(jù),然后從頭開始循環(huán)覆蓋
    發(fā)表于 09-22 08:20

    如何在機(jī)器視覺中部署深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

    人士而言往往難以理解,人們也常常誤以為需要扎實(shí)的編程技能才能真正掌握并合理使用這項(xiàng)技術(shù)。事實(shí)上,這種印象忽視了該技術(shù)為機(jī)器視覺(乃至生產(chǎn)自動(dòng)化)帶來的潛力,因?yàn)樯疃葘W(xué)習(xí)并非只屬于計(jì)算機(jī)科學(xué)家或程序員。 從頭開始:什么
    的頭像 發(fā)表于 09-10 17:38 ?1028次閱讀
    如何在機(jī)器視覺中部署深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

    如何在TPU上使用JAX訓(xùn)練GPT-2模型

    如果您對(duì)如何使用 JAX 從頭開始構(gòu)建語言模型感到好奇,那么本文非常適合您。我們在 2025 年 Google Cloud Next 大會(huì)上舉辦了一場關(guān)于此主題的研討會(huì),并獲得了一些很好的反饋,我們也為所有無法參會(huì)的開發(fā)者編寫了這份指南。
    的頭像 發(fā)表于 09-03 11:39 ?1800次閱讀
    如何在TPU上使用JAX訓(xùn)練GPT-2模型

    Arm方案 基于Arm架構(gòu)的邊緣側(cè)設(shè)備(樹莓派或 NVIDIA Jetson Nano)上部署PyTorch模型

    本文將為你展示如何在樹莓派或 NVIDIA Jetson Nano 等基于 Arm 架構(gòu)的邊緣側(cè)設(shè)備上部署 PyTorch 模型。
    的頭像 發(fā)表于 07-28 11:50 ?3025次閱讀

    求助,關(guān)于CYUSB3KIT中的編程問題求解

    我的工作,但我不太確定,所以如果有人可以告訴我從頭開始做,以便我理解它,同時(shí)將數(shù)據(jù)捕獲到 PC 中是否可以通過CYPRESS?自己的軟件完成,還是我需要自己制作?數(shù)據(jù)將以 100 MHz 的頻率同步 16 位。 幫助?。?!
    發(fā)表于 05-09 08:06
    黄浦区| 临湘市| 中卫市| 新乡县| 巨野县| 宜黄县| 泸西县| 饶平县| 威远县| 宜城市| 怀远县| 长治市| 富川| 措美县| 曲松县| 南昌市| 蓬莱市| 伊金霍洛旗| 德兴市| 澎湖县| 吴川市| 诏安县| 东城区| 荔波县| 和龙市| 乐都县| 宝丰县| 融水| 漳州市| 得荣县| 乌鲁木齐县| 罗甸县| 邯郸市| 平南县| 陈巴尔虎旗| 西昌市| 阜康市| 呼玛县| 东莞市| 新绛县| 蓝山县|