国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

人工智能學習框架—飛槳Paddle人工智能

這篇具有很好參考價值的文章主要介紹了人工智能學習框架—飛槳Paddle人工智能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

1.人工智能框架

機器學習的三要素:模型、學習策略、優(yōu)化算法。

當我們用機器學習來解決一些模式識別任務時,一般的流程包含以下幾個步驟:

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

1.1.淺層學習和深度學習

淺層學習(Shallow Learning):不涉及特征學習,其特征主要靠人工經(jīng)驗或特征轉換方法來抽取。

底層特征VS高層語義:人們對文本、圖像的理解無法從字符串或者圖像的底層特征直接獲得

深度學習通過構建具有一定“深度”的模型,可以讓模型來自動學習好的特征表示(從底層特征,到中層特征,再到高層特征),從而最終提升預測或識別的準確性。

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

深度學習的數(shù)學描述

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

fl(x)為非線性函數(shù),不一定連續(xù)。

深度學習的難點

y=f^5^(f^4^(f^3^(f^2^(f^1^(x)))))

貢獻度分配問題:一個復雜系統(tǒng)中每個組件對最終評價的貢獻。

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

如何解決貢獻度分配問題:

其中我們一般采用的方法就是求偏導數(shù),也就是使用誤差反向傳播算法,這是我們學習神經(jīng)網(wǎng)絡的時候接觸到過的。

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

貢獻度:

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

我們要知道一點,那就是神經(jīng)網(wǎng)絡天然不是深度學習,但深度學習天然是神經(jīng)網(wǎng)絡!

1.2.神經(jīng)網(wǎng)絡與深度學習的關系

人工智能的一個子領域

神經(jīng)網(wǎng)絡:一種以(人工)神經(jīng)元為基本單元的模型

深度學習:一類機器學習問題,主要解決貢獻度分配問題

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

我們都明白,機器(深度)學習非常有可能成為計算機學科的關鍵技術。

機器學習必然會發(fā)展到深度學習,不一定是神經(jīng)網(wǎng)絡,基于不可微架構的深度學習可能是未來方向。對于計算機學科是如此,而對于其他學科也是聯(lián)系十分的緊密,深度學習也越來越多地成為傳統(tǒng)學科的關鍵技術,涉及到數(shù)學、物理、化學、醫(yī)藥、天文、地理。

經(jīng)過兩周騰訊比賽,我對深度學習和強化學習有了自己的感悟:

  1. 理論支撐不足

  2. 調參一頭霧水

  3. 模型無法解釋

  4. 改進沒有方向

當然,也有玩笑的成分在里面,也算是我和人工智能的第一次接觸下來的感慨吧,領域多、知識點多,理論和實踐緊密結合。

面對這些問題我們該怎么做嘞?

沒錯,就是肝各種前置知識,當然并行一起也可以。數(shù)學方面,就是線性代數(shù)、微積分、變分法、概率論、優(yōu)化以及信息論。

我們需要在學習中逐步形成下面這張圖的知識體系:

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

機器學習實踐流程中的五要素:

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

1.3.Runner類

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

看到圖上的箭頭了嗎,我們在模型準備中就是通過相應的損失函數(shù)、評價指標之后,也就是runner運行以后確定了模型合規(guī),然后送到訓練中,可能是強化訓練進行探索,也可能是別的東西。像我們在騰訊開悟的比賽中,就是這樣的形式,訓練一定的時間就會出相應的模型,再提交到指定的平臺進行模型評價和測試評估。

代碼模板:

class Runner(object):
 ? ?def __init__(self, model, optimizer, loss_fn, metric):
 ? ? ? ?self.model = model #模型
 ? ? ? ?self.optimizer = optimizer #優(yōu)化器
 ? ? ? ?self.1oss_fn = 1oss_fn #損失函數(shù)
 ? ? ? ?self.metric = metric #評價指標
 ? ? ? ?
    # 模型訓練
 ? ?def train(self, train_dataset, dev_dataset=None, **kwargs):
 ? ? ? ?pass
 ? ?
 ? ?# 模型評價
 ? ?def evaluate(self, data_set, **kwargs):
 ? ? ? ?pass
 ? ?
 ? ?# 模型預測
 ? ?def predict(self, x, **kwargs):
 ? ? ? ?pass
 ? ?
 ? ?# 模型保存
 ? ?def save_model(self, save_path):
 ? ? ? ?pass
 ? ?
 ? ?# 模型加載
 ? ?def load_model(self, model_path):
 ? ? ? ?pass

1.4.張量與算子

數(shù)據(jù)的表現(xiàn)形式是張量

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

模型的基本單位:算子

class Op(object):
 ? ?def __init__(self):
 ? ? ? ?pass
 ? ?
 ? ?def __call__(self, inputs):
 ? ? ? ?return self.forward(inputs)
 ? ?
 ? ?# 前向函數(shù)
    # 輸入:張量inputs
    # 輸出:張量outputs
    def forward(self, inputs):
        # return outputs
        raise NotImplementedError
 ? ? ? ?
    # 反向函數(shù)
    # 輸入:最終輸出對outputs的梯度outputs_grads
    # 輸出:最終輸出對inputs的梯度inputs_grads
    def backward(self,outputs_grads):
        # return inputs_grads
        raise NotImplementedError

加法算子的前向和反向計算過程

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

一個復雜的機器學習模型(比如神經(jīng)網(wǎng)絡)可以看做一個復合函數(shù)

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

參數(shù)學習:梯度計算

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

為了繼承飛槳的paddle.nn.layer

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

蒲公英一書中實現(xiàn)的Runner類:

RunnerV1

用于線性回歸模型的訓練,其中訓練過程通過直接求解析解的方式得到模型參數(shù),沒有模型優(yōu)化及計算損失函數(shù)過程,模型訓練結束后保存模型參數(shù)

Runner V2

主要增加的功能為:①在訓練過程中引入梯度下降法進行模型優(yōu)化.

②在模型訓練過程中計算訓練集和驗證集上的損失及評價指標并打印,在訓練過程中保存最優(yōu)模型

Runner V3

主要增加三個功能:使用隨機梯度下降法進行參數(shù)優(yōu)化.訓練過程使用DataLoader加載批量數(shù)據(jù).模型加載與保存中,模型參數(shù)使用state_dict方法獲取,使用state_dist加載

Runner V3基本上可以應用于大多數(shù)機器學習任務。

算子庫nndl

從模型構建角度出發(fā),借鑒深度學習框架中算子的概念,從基礎開始一步步實現(xiàn)自定義的基本算子庫,進一步通過組合自定義算子來搭建機器學習模型,最終搭建自己的機器學習模型庫nndl。

在實踐過程中不僅知其然還知其所以然,更好地掌握深度學習的模型和算法,并理解深度學習框架的實現(xiàn)原理。

2.NNDL開源庫

NNDL (Neural Network Distillation Library) 是一個用于深度學習研究的開源庫,主要用于知識蒸餾(Knowledge Distillation)任務。

知識蒸餾是一種將大型預訓練模型(教師模型)的知識轉移到小型模型(學生模型)的方法。NNDL 提供了一個框架,支持使用圖像分類任務進行知識蒸餾,包括模型定義、訓練和測試等過程。

該庫主要特點包括:

  1. 支持多種流行的深度學習框架,如 TensorFlow 和 PyTorch。

  2. 提供多個預訓練的教師模型,以及學生模型的蒸餾訓練。

  3. 針對圖像分類任務,支持各種數(shù)據(jù)增強和網(wǎng)絡結構。

  4. 可用于開發(fā)高效的神經(jīng)網(wǎng)絡模型,包括卷積神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡等。

請注意,NNDL 是一個相對較新的開源庫,可能存在一些限制和缺陷。在使用過程中,請確保您理解其工作原理和適用范圍,并根據(jù)需要進行適當?shù)恼{整和優(yōu)化。

NNDL案例與實踐的特色在于

  1. 深入理論內部的實踐,比如:從0實現(xiàn)反向傳播、卷積、transformer等。

  2. 關鍵理論原理的實踐,比如:SRN的記憶能力與梯度爆炸、LSTM的記憶能力等。

  3. 貼近產(chǎn)業(yè)場景的實踐,比如:cnn實現(xiàn)圖像分類、mn實現(xiàn)文本分類、transformer實現(xiàn)語義匹配等。

  4. 貼近產(chǎn)業(yè)工程的實踐,比如:基于訓練框架Runnert的實驗、逐步完善的nnd工具包、模型精度速度的分析方法等。

  5. 兼顧理論與實踐的作業(yè)設計,比如:基礎知識回顧與實踐,動手比賽和產(chǎn)業(yè)應用實踐等。

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

3.模型訓練

使用Runner,進行相關模型訓練配置,即可啟動模型訓練

# 指定運行設備
use_gpu = True if paddle.get_device().startswith("gpu") else False
if use_gpu:
 ? ?paddle.set_device('gpu:0')
# 學習率大小
lr = 0.001
# 批次大小
batch_size = 64
# 加載數(shù)據(jù)
train_loader = io.DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
dev_loader = io.DataLoader(dev_dataset, batch_size=batch_size)
test_loader = io.DataLoader(test_dataset, batch_size=batch_size)
# 定義網(wǎng)絡
model = resnet19_model
# 定義優(yōu)化器,這里使用Adam優(yōu)化器以及l(fā)2正則化策略,相關內容在后續(xù)會有相應的教程
optimizer = opt.Adam(learning_rate=lr, parameters=model.parameters(), weight_decay=0.005)
# 定義損失函數(shù)
loss_fn = F.cross_entropy
# 定義評價指標
runner = RunnerV3(model, optimizer, loss_fn, metric)
# 啟動訓練
log_steps = 3000
eval_steps = 3000
runner.train(train_loader,dev_loader,num_epochs=30,log_steps=log_steps,
 ? ? ? ? ? ? eval_steps=eval_steps,save_path="best_model.pdparams")

4.殘差網(wǎng)絡

  1. 殘差網(wǎng)絡:在神經(jīng)網(wǎng)絡模型中給非線性層增加直連邊的方式來緩解梯度消失問題,從而使訓練深度神經(jīng)網(wǎng)絡變得更加容易

  2. 殘差單元:一個典型的殘差單元由多個級聯(lián)的卷積層和一個跨層的直連邊組成ResBlock f(x) = f(x; θ)+x

  3. Transformer:加與規(guī)范層,H=LN(H+X)

  4. Gradient BoostingGreedy Function Approximation:A Gradient Boosting Machine,GBDT:Gradient Boosting Decision Tree

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

ResNet18整體結構與實現(xiàn)

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

# 定義完整網(wǎng)絡
class Model_ResNet18(nn.Layer):
 ? ?def __init__(self, in_channels=3, num_classes=10, use_residual=Ture):
 ? ? ? ?super(Model_ResNet18, self).__init__()
 ? ? ? ?b1 = make_first_block(in_channels)
 ? ? ? ?b2, b3, b4, b5 = make_blocks(use_residual)
 ? ? ? ?# 封裝模板1到模板6
 ? ? ? ?self.net = nn.Sequential(b1, b2, b3, b4, b5,
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 模塊6:匯聚層、全連接層
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nn.AdaptiveAvgPool2D(1),
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nn.Flatten(), nn.Linear(512, num_classes))

然后針對構建ResNet18中各模塊,后序會有所介紹,這里就以b1為例,展示一下它相應的代碼

def make_first_block(in_channels):
 ? ?# m模塊1:7*7卷積、批歸一化、匯聚
 ? ?b1 = nn.Sequential(nn.Conv2D(in_channels, 64, kernel_size=7, stride=2, padding=3),
 ? ? ? ? ? ? ? ? ? ? ?nn.BatchNorm2D(64), nn.ReLU(),
 ? ? ? ? ? ? ? ? ? ? ?nn.MaxPool2D(kernel_size=3, stride=2, padding=1))
 ? ?return b1

通常而言,特別是是在模型評價中,不帶殘差連接的ResNet18網(wǎng)絡的準確率是遠小于加了殘差連接的神經(jīng)網(wǎng)絡的,模型效果差別是相當顯著的。

5.卷積神經(jīng)網(wǎng)絡應用及原理

5.1.卷積神經(jīng)網(wǎng)絡

卷積一詞我們并不陌生,我們在學習深度學習或者強化學習經(jīng)常會遇到卷積這個概念。簡而言之,卷積就是將我們的數(shù)據(jù)進行處理,處理得足夠小,足以讓我們的機器去識別。

在二維卷積算子中,我們的目的是在具體實現(xiàn)上,以互相運算來代替卷積,對于一個輸入矩陣X∈RM*N,使用濾波器W∈RU*V進行運算。

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

上面的深色區(qū)域也就是我們所說的滑動窗口(嘿嘿,情不自禁想起了y總算法基礎課里的滑動窗口一題,那個是一個典型的動態(tài)規(guī)劃問題),為了實現(xiàn)局部信息到全局信息的融合,通過權值共享實現(xiàn)了參數(shù)量的不增加,降低了網(wǎng)絡模型的復雜度,減少了權值的數(shù)目。參數(shù)的。在整個網(wǎng)絡的訓練過程中,包含權值的卷積核也會隨之更新,直到訓練完成。

輸出特征圖大小M' = M - U + 1 N' = N - V + 1

特性

  1. 局部連接:第i層中的每一個神經(jīng)元都只和第i-1層中某個局部窗口內的神經(jīng)元相連,構成一個局部連接網(wǎng)絡。

  2. 權重共享:所有作為參數(shù)的卷積核W∈RU*V對于第i層的所有神經(jīng)元都是相同的。

二維卷積算子

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

可以隨機構造一個二維輸入矩陣

paddle.seed(100)
inputs = paddle.to_tensor([[[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]]])
?
conv2d = Conv2D(kernel_size=2)
outputs = conv2d(inputs)
print("input:{}\noutput:{}"format(inputs,outputs))

5.2.API說明

API(Application Programming Interface,應用程序編程接口)是一種定義軟件組件之間如何通信的規(guī)范。它提供了一種標準化的接口,允許不同的軟件系統(tǒng)之間進行交互和通信。

API通常是一組預先定義的函數(shù)、方法、類和對象,開發(fā)人員可以使用這些接口來調用軟件組件的功能。API還規(guī)定了如何傳遞參數(shù)、返回值以及錯誤處理等細節(jié)。

API說明通常包括以下內容:

  1. 接口名稱和功能描述:提供接口的名稱和功能描述,讓開發(fā)人員了解該接口的作用和用途。
  2. 輸入?yún)?shù)說明:詳細說明每個輸入?yún)?shù)的名稱、類型、意義和用法,以確保開發(fā)人員正確地使用這些參數(shù)。
  3. 返回值說明:解釋每個返回值的含義和用法,以及在成功或失敗時返回什么樣的數(shù)據(jù)。
  4. 錯誤處理說明:描述可能會出現(xiàn)的錯誤和異常情況,并提供相應的處理方法。
  5. 其他注意事項:提供其他與接口相關的信息和注意事項,例如使用限制、安全要求等。

通過閱讀API說明,開發(fā)人員可以更好地理解接口的用途和使用方法,從而更有效地使用API進行軟件開發(fā)和集成。

paddle.create_parameter(shape,dtype,attr=None)

功能:創(chuàng)建一個可學習的Parameter變量

輸入:Parameter變量的形狀、數(shù)據(jù)類型、屬性

輸出:創(chuàng)建的Parameter變量

二維卷積算子的參數(shù)量

對于一個輸入矩陣X∈RMxN,使用濾波器W∈RUxV進行運算,卷積核的參數(shù)量為:U×V

假設有一個32×32大小的圖像,使用隱藏層神經(jīng)元個數(shù)為1的全連接前饋網(wǎng)絡進行處理:

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

32 * 32 + 1 =1025

使用3 * 3卷積核進行處理,參數(shù)量為:9

5.3.二維卷積算子的計算量

計算量:網(wǎng)絡乘加運算總次數(shù)

FLOPs=M' * N' * U * V

假設有一個32×32大小的圖像,使用3×3卷積核進行處理,計算量為:

M' = M - U + 1 = 30

N' = N - V + 1 = 30

FL0Ps = M' × N' × U × V = 30 × 30 × 3 × 3 = 8100

5.4.感受野

這個概念也不陌生,是指神經(jīng)元或感受器能接受刺激的空間范圍。在視覺系統(tǒng)中,它通常指的是視網(wǎng)膜上一個簡單的、沒有特定方向性的感受器(即非方向性光感受器)能接收到的空間范圍。在中樞中,某一神經(jīng)元的感受野是分布于其胞體和樹突上,是在時間和空間上能被神經(jīng)元響應的各種形式的光刺激模式(即特定的空間頻率特性)的總和。

就如下面兩個特征圖:

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

感受野大小:3 x 3

輸出特征圖上的像素點所能感受到的輸入數(shù)據(jù)的范圍

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

5.5.帶步長和零填充的二維卷積算子

步長(Stride)

在所有維度上每隔S個元素計算一次,S稱為卷積的步長

對于一個輸入矩陣X∈RMxW,使用濾波器W∈RUxV進行運算

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

零填充(Zero Padding)

如果不進行填充,當卷積核尺寸大于時,輸出特征會縮減

對輸入進行零填充可以對卷積核的寬度和輸出的大小進行獨立的控制

對于一個輸入矩陣X∈RMxN,使用濾波器W∈RUxV進行運算,步長為S,并進行零填充后,輸出矩陣大小為:

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

參數(shù)量:U x V

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

帶步長和零填充的二維卷積算子代碼

class Conv2D(nn.Layer):
 ? ?def __init__(self, kernel_size, stride=1, padding=0,
 ? ? ? ? ? ? ? ? weight_attr=paddle.ParamAttr(initializer=nn.initializer.Constant(value=1.0))):
 ? ? ? ?super(Conv2D, self).__init__()
 ? ? ? ?self.weight = paddle.create_parameter(shape=[kernel_size,kernel_size],
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dtype='float32',
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? attr=weight_attr)
 ? ? ? ?# 步長
 ? ? ? ?self.stride = stride
 ? ? ? ?# 零填充
 ? ? ? ?self.padding = padding
 ? ? ? ?
 ? ?def forward(self, X):
 ? ? ? ?# 零填充
 ? ? ? ?new_X = paddle.zeros([X.shape[0], X.shape[1]+2*self.padding, X.shape[2]+2*self.padding])
 ? ? ? ?new_X[:, self.padding:X.shape[1]+self.padding, self.padding:X.shape[2]+self.padding] = X
 ? ? ? ?u, v = self.weight.shape
 ? ? ? ?output_w = (new_X.shap[1] - u) // self.stride + 1
 ? ? ? ?output_h = (new_X.shap[2] - u) // self.stride + 1
 ? ? ? ?output = paddle.zeros([X.shape[0], output_w, output_h])
 ? ? ? ?for i in range(0, output.shape[1]):
 ? ? ? ? ? ?for j in range(0, output.shape[2]):
 ? ? ? ? ? ? ? ?output[:, i, j] = paddle.sum(
 ? ? ? ? ? ? ? ?new_X[:, self.stride*i:self.stride*i+u, self.stride*j:self.stride*j+v]*self.weight,
 ? ? ? ? ? ? ? ?axis=[1,2])
 ? ? ? ? ? ? ? ?return output
 ? ? ? ? ? ?
inputs = paddle.randn(shape=[2, 8, 8])
conv2d_padding = Conv2D(kernel_size=3, padding=1)
outputs = conv2d_padding(inputs)
print("When kernel_size=3,padding=1 stride=1,input's shape:{}output's shape:()"format(inputs.shape,outputs.shape))
conv2d_stride Conv2D(kernel_size=3,stride=2,padding=1)
outputs conv2d_stride(inputs)

卷積神經(jīng)網(wǎng)絡

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

6.卷積層算子

輸入通道:等于輸入特征圖的深度D

例如:輸入是灰度圖像,則輸入通道數(shù)為1;輸入是彩色圖像,分別有R、G、B三個通道,則輸入通道數(shù)為3;輸入是深度D的特征圖,則輸入通道數(shù)為D

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

6.1.多通道卷積層算子

class Conv2D(nn.Layer):
 ? ?def __init__(self, in_channels, out_channels, kernel_size, stride=1, padding=0,
 ? ? ? ? ? ? ? ?weight_attr=paddle.ParamAttr(initializer=nn.initializer.Constant(value=1.0)),
 ? ? ? ? ? ? ? ?bias_attr=paddle.ParamAttr(initializer.Constant(value=0.0))):
 ? ? ? ?super(Conv2D, self).__init__()
 ? ? ? ?#創(chuàng)建卷積核
        self.weight = paddle.create_parameter(shape=[out_channels, in_channels, kernel_size, kernel_size],
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dtype='float32',
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?attr=weight_attr)
 ? ? ? ?#創(chuàng)建偏置
 ? ? ? ?self.bias = paddle.create_parameter(shape=[out_channels, 1],
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dtype='float32',
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?attr=bias_attr)
 ? ? ? ?self.stride = stride
 ? ? ? ?self.padding = padding
 ? ? ? ?#輸入通道數(shù)
 ? ? ? ?self.in_channels = in_channels
 ? ? ? ?#輸出通道數(shù)
 ? ? ? ?self.out_channels = out_channels
    #基礎卷積運算
    def single_forward(self, X, weight):
 ? ? ? ?#零填充
 ? ? ? ?new_X = paddle.zeros([X.shape[0],X.shape[1]+2*self.padding,X.shape[2]+2*self.padding])
 ? ? ? ?new_X[:,self.padding:X.shape[1]+self.padding,self.padding:X.shape[2]+self.padding]=x
 ? ? ? ?u,v weight.shape
 ? ? ? ?output_w =(new_X.shape[1]u)//self.stride +1
 ? ? ? ?output_h (new_X.shape[2]-v)//self.stride 1
 ? ? ? ?output paddle.zeros([X.shape[e],output_w,output_h])
 ? ? ? ?for i in range(0,output.shape[1]):
 ? ? ? ? ? ?for j in range(0, output.shape[2]):
 ? ? ? ? ? ? ? ?output[:, i, j] = paddle.sum(
 ? ? ? ? ? ? ? ?new_X[:, self.stride*i:self.stride*i+u, self.stride*j:self.stride*j+v]*self.weight,
 ? ? ? ? ? ? ? ?axis=[1,2])
 ? ? ? ? ? ? ? ?return output

6.2.匯聚層算子

平均匯聚:將輸入特征圖劃分多個為M'×N'大小的區(qū)域,對每個區(qū)域內的神經(jīng)元活性值取平均值作為這個區(qū)域的表示

最大匯聚:使用輸入特征圖的每個子區(qū)域內所有神經(jīng)元的最大活性值作為這個區(qū)域的表示

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

平移不變:當輸入數(shù)據(jù)做出少量平移時,經(jīng)過匯聚運算后的大多數(shù)輸出還能保持不變。

參數(shù)量:0 計算量:最大匯聚為0 平均匯聚為M' x N' x P

6.3.雙向LSTM和注意力機制的文本分類-注意力層

嵌入層:將輸入句子中的詞語轉換成向量表示;

LSTM層:基于雙向LSTM網(wǎng)絡來構建句子中的上下文表示;

注意力層:使用注意力機制從LSTM的輸出中篩選和聚合有效特征;

線性層:輸出層,預測對應的類別得分。

6.4.注意力機制

從N個輸入向量中選擇出和某個特定任務相關的信息。

輸入向量:X=[x1;...;Xn]小,其中Xn是向量,X∈RNxD其中n是序列長度,D表示每個元素的維度

查詢向量:q,任務相關

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡

打分函數(shù)

加強模型,雙線性模型

點積模型,縮放點積模型

QKV自注意力的深度代碼解讀

人工智能學習框架—飛槳Paddle人工智能,深度學習,學習,linux,windows,人工智能,paddle,paddlepaddle,神經(jīng)網(wǎng)絡文章來源地址http://www.zghlxwxcb.cn/news/detail-653369.html

到了這里,關于人工智能學習框架—飛槳Paddle人工智能的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 人工智能深度學習

    人工智能深度學習

    目錄 人工智能 深度學習 機器學習 神經(jīng)網(wǎng)絡 機器學習的范圍 模式識別 數(shù)據(jù)挖掘 統(tǒng)計學習 計算機視覺 語音識別 自然語言處理 機器學習的方法 回歸算法 神經(jīng)網(wǎng)絡 SVM(支持向量機) 聚類算法 降維算法 推薦算法 其他 機器學習的分類 機器學習模型的評估 機器學習的應用 機

    2024年02月22日
    瀏覽(26)
  • 人工智能之深度學習

    第一章 人工智能概述 1.1人工智能的概念和歷史 1.2人工智能的發(fā)展趨勢和挑戰(zhàn) 1.3人工智能的倫理和社會問題 第二章 數(shù)學基礎 1.1線性代數(shù) 1.2概率與統(tǒng)計 1.3微積分 第三章 監(jiān)督學習 1.1無監(jiān)督學習 1.2半監(jiān)督學習 1.3增強學習 第四章 深度學習 1.1神經(jīng)網(wǎng)絡的基本原理 1.2深度學習的

    2024年02月09日
    瀏覽(28)
  • 人工智能、機器學習、深度學習的區(qū)別

    人工智能、機器學習、深度學習的區(qū)別

    人工智能涵蓋范圍最廣,它包含了機器學習;而機器學習是人工智能的重要研究內容,它又包含了深度學習。 人工智能是一門以計算機科學為基礎,融合了數(shù)學、神經(jīng)學、心理學、控制學等多個科目的交叉學科。 人工智能是一門致力于使計算機能夠模擬、模仿人類智能的學

    2024年02月08日
    瀏覽(32)
  • 人工智能的深度學習如何入門

    人工智能深度學習近年來成為熱門的技術領域,被廣泛應用于許多領域,如自然語言處理、圖像識別、機器翻譯等。學習人工智能深度學習需要具備一定的數(shù)學和編程基礎,但對于初學者來說,并不需要過于復雜的數(shù)學和編程知識。本文將介紹人工智能深度學習的基本概念和

    2024年03月27日
    瀏覽(30)
  • 深度學習:探索人工智能的前沿

    深度學習:探索人工智能的前沿

    人工智能(Artificial?Intelligence,簡稱AI)是一門研究如何使計算機能夠執(zhí)行通常需要人類智能的任務的領域。從早期的符號推理到現(xiàn)代的深度學習,人工智能經(jīng)歷了漫長的發(fā)展過程。 20世紀50年代,AI的奠基性工作開始,研究者們試圖通過符號推理來模擬人類思維過程。然而,

    2024年01月19日
    瀏覽(36)
  • 機器學習、人工智能、深度學習三者的區(qū)別

    機器學習、人工智能、深度學習三者的區(qū)別

    目錄 1、三者的關系 2、能做些什么 3、階段性目標 機器學習、人工智能(AI)和深度學習之間有密切的關系,它們可以被看作是一種從不同層面理解和實現(xiàn)智能的方法。 人工智能(AI):人工智能是一門研究如何使計算機能夠模仿人類智能的學科。它涵蓋了各種技術和方法,

    2024年02月14日
    瀏覽(29)
  • 12、人工智能、機器學習、深度學習的關系

    12、人工智能、機器學習、深度學習的關系

    很多年前聽一個機器學習的公開課,在QA環(huán)節(jié),一個同學問了老師一個問題“ 機器學習和深度學習是什么關系 ”? 老師先沒回答,而是反問了在場的同學,結果問了2-3個,沒有人可以回答的很到位,我當時也是初學一臉懵,會場準備的小禮品也沒有拿到。 后來老師解釋“機

    2024年02月05日
    瀏覽(48)
  • 一探究竟:人工智能、機器學習、深度學習

    一探究竟:人工智能、機器學習、深度學習

    1.1 人工智能是什么? ? ? ? ? ?1956年在美國Dartmounth 大學舉辦的一場研討會中提出了人工智能這一概念。人工智能(Artificial Intelligence),簡稱AI,是計算機科學的一個分支,它企圖了解智能的實質,并生產(chǎn)出一種新的能以人類智能相似的方式做出反應的智能機器,該領域的

    2024年02月17日
    瀏覽(28)
  • 機器學習入門教學——人工智能、機器學習、深度學習

    機器學習入門教學——人工智能、機器學習、深度學習

    1、人工智能 人工智能相當于人類的代理人,我們現(xiàn)在所接觸到的人工智能基本上都是弱AI,主要作用是正確解釋從外部獲得的數(shù)據(jù),并對這些數(shù)據(jù)加以學習和利用,以便靈活的實現(xiàn)特定目標和任務。 例如: 阿爾法狗、智能汽車 簡單來說: 人工智能使機器像人類一樣進行感

    2024年02月09日
    瀏覽(94)
  • 人工智能-機器學習-深度學習-分類與算法梳理

    人工智能-機器學習-深度學習-分類與算法梳理

    目前人工智能的概念層出不窮,容易搞混,理清脈絡,有益新知識入腦。 為便于梳理,本文只有提綱,且筆者準備倉促,敬請勘誤,不甚感激。 符號主義(Symbolists) 基于邏輯推理的智能模擬方法。最喜歡的算法是:規(guī)則和決策樹。符號主義的代表性成果有啟發(fā)式程序、專家系

    2024年02月03日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包