TW201839676A - 在模型轉換期間追蹤軸 - Google Patents

在模型轉換期間追蹤軸 Download PDF

Info

Publication number
TW201839676A
TW201839676A TW107106112A TW107106112A TW201839676A TW 201839676 A TW201839676 A TW 201839676A TW 107106112 A TW107106112 A TW 107106112A TW 107106112 A TW107106112 A TW 107106112A TW 201839676 A TW201839676 A TW 201839676A
Authority
TW
Taiwan
Prior art keywords
axis
target
order
current
sequence
Prior art date
Application number
TW107106112A
Other languages
English (en)
Other versions
TWI738974B (zh
Inventor
特賈許 沙阿
多可 維
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW201839676A publication Critical patent/TW201839676A/zh
Application granted granted Critical
Publication of TWI738974B publication Critical patent/TWI738974B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Image Analysis (AREA)

Abstract

一種將源框架的第一操作映射到目標框架的第二操作以用於人工神經網路的方法包括:決定當前源軸順序和當前目標軸順序之間的對準。該方法亦包括:基於該對準、以及第一操作的預期的源軸順序及/或第二操作的預期的目標軸順序,來設置當前目標軸順序。

Description

在模型轉換期間追蹤軸
本專利申請案主張於2017年3月28日提出申請並且標題為「TRACKING AXES DURING MODEL CONVERSION」的美國臨時專利申請案第62/477,918號的權益,故以引用方式將其揭示的全部內容明確地併入本文中。
大體而言,本揭示內容的某些態樣係關於機器學習,並且更特定而言,本揭示內容的某些態樣係關於改進在模型轉換期間追蹤軸的系統和方法。
可以包括互連的一組人工神經元(例如,神經元模型)的人工神經網路是計算設備,或者表示由計算設備執行的方法。
迴旋神經網路是一種類型的前饋人工神經網路。迴旋神經網路可以包括神經元的集合,每個神經元皆具有接受域,並共同地拼接輸入空間。迴旋神經網路(CNN)具有眾多應用。特定而言,在模式辨識和分類領域已廣泛地使用CNN。
深度學習架構(諸如,深度信念網路和深度迴旋網路)是分層神經網路架構,其中第一層神經元的輸出成為第二層神經元的輸入,第二層神經元的輸出成為第三層神經元的輸入,等等。可以對深度神經網路進行訓練以辨識特徵的層次結構,並且因此其已經越來越多地用於目標辨識應用中。類似於迴旋神經網路,該等深度學習架構中的計算可以分佈在眾多的處理節點上,該等處理節點可以經配置在一或多個計算鏈中。該等多層架構可以一次訓練一層,並且可以使用反向傳播來進行微調。
訓練框架可以用來訓練深度學習模型。訓練好的深度學習模型可以在不同的推理引擎上執行,諸如snapdragon神經處理引擎(SNPE)庫和其他框架/推理引擎(諸如,Caffe、Torch或TensorFlow)。亦即,深度學習模型可以使用一個框架進行訓練,並可以在不同的框架上執行。該等模型在不同的框架上執行之前,該等模型可能經歷用於從源框架到目標框架的映射操作的轉換過程,諸如迴旋、池化或級聯。該等操作可以接收多維輸入,並且產生多維輸出。
每個特定框架/推理引擎執行各種操作,其中以指定的軸順序接收輸入,並且以固定的軸順序產生輸出。指定的軸順序可能從一個框架到下一個框架而不同。另外,與其他框架相比,用於框架的指定軸可能包括更多或者更少的維度。框架之間的轉換可能是具有挑戰性的,並導致計算錯誤。亦即,從一個框架到下一個框架的映射可能是具有挑戰性的,並且當複雜模型採用諸如置換、重塑和展平之類的軸操縱操作時,可能會加劇此種挑戰。期望提供改進的映射過程(例如,轉換過程)。
在本揭示內容的一個態樣中,揭示一種將源框架的第一操作映射到目標框架的第二操作以用於人工神經網路的方法。該方法包括:決定當前源軸順序和當前目標軸順序之間的對準。該方法亦包括:基於該對準、以及第一操作的預期的源軸順序及/或第二操作的預期的目標軸順序,來設置當前目標軸順序。
本揭示內容的另一個態樣涉及一種裝置,該裝置包括:用於決定當前源軸順序和當前目標軸順序之間的對準的構件。該裝置亦包括:用於基於該對準、以及第一操作的預期的源軸順序及/或第二操作的預期的目標軸順序,來設置當前目標軸順序的構件。
在本揭示內容的另一個態樣中,揭示一種其上記錄有非暫時性程式碼的非暫時性電腦可讀取媒體。用於將源框架的第一操作映射到目標框架的第二操作以用於人工神經網路的的程式碼由處理器執行,並且包括:用於決定當前源軸順序和當前目標軸順序之間的對準的程式碼。該程式碼亦包括:用於基於該對準、以及第一操作的預期的源軸順序及/或第二操作的預期的目標軸順序,來設置當前目標軸順序的程式碼。
本揭示內容的另一個態樣涉及一種用於將源框架的第一操作映射到目標框架的第二操作以用於人工神經網路的裝置。該裝置具有記憶體單元和耦接到該記憶體單元的一或多個處理器。該處理器經配置為:決定當前源軸順序和當前目標軸順序之間的對準。該處理器亦經配置為:基於該對準、以及第一操作的預期的源軸順序及/或第二操作的預期的目標軸順序,來設置當前目標軸順序。
這是概括地而非廣泛地描述本揭示內容的特徵和技術優點以便能夠更好地理解以下的實施方式。下文將描述本揭示內容的額外特徵和優點。本領域一般技藝人士應當意識到的是,可以將所揭示的內容容易地使用成用於修改或設計用於執行本揭示內容的相同目的其他結構的基礎。本領域一般技藝人士亦應認識到,該等等同的構造並不脫離如所附申請專利範圍闡述的本揭示內容的教示。根據以下描述,當結合附圖來考慮時,將能更好地理解被認為是本揭示內容的特性的新穎特徵,關於其組織和操作方法,連同另外的物件和優點。但是,應當明確理解的是,提供該等附圖中的每一個附圖僅僅是用於說明和描述目的,而不是用作界定本揭示內容的限制。
下文結合附圖闡述的實施方式,僅僅意欲對各種配置進行描述,而不是意欲表示本文所描述的概念僅在其中才可以實踐的配置。為了提供對各種概念的透徹理解,實施方式包括特定的細節。但是,對本領域一般技藝人士來說顯而易見的是,可以在不使用該等特定細節的情況下實踐該等概念。在一些實例中,為了避免對該等概念造成模糊,熟知的結構和部件以方塊圖形式圖示。
基於教示,本領域一般技藝人士應當意識到,本揭示內容的保護範圍意欲覆蓋本揭示內容的任何態樣,不管其是獨立實現的,還是結合本揭示內容的其他態樣來實現的。例如,使用本文闡述的任意數量的態樣可以實現裝置或可以實踐方法。此外,本揭示內容的保護範圍意欲覆蓋如下的此種裝置或方法,此種裝置或方法可以使用其他結構、功能、或者除本文所闡述的本揭示內容的各個態樣的結構和功能、或不同於本文所闡述的本揭示內容的各個態樣的結構和功能來實踐。應當理解的是,本文所揭示的揭示內容的任何態樣可以經由申請專利範圍的一或多個元素來體現。
本文所使用的「示例性的」一詞意味著「用作示例、實例或說明」。本文中描述為「示例性」的任何態樣不一定被解釋為比其他態樣更佳或更具優勢。
儘管本文描述了一些特定的態樣,但是該等態樣的多種變型和置換亦落入本揭示內容的保護範圍之內。儘管提及了較佳的態樣的一些益處和優點,但是本揭示內容的保護範圍並不意欲受到特定的益處、用途或物件的限制。相反,本揭示內容的態樣意欲廣泛地適用於不同的技術、系統配置、網路和協定,其中的一些經由實例的方式在附圖和較佳態樣的下文描述中進行了說明。實施方式和附圖僅僅是對本揭示內容的說明而不是限制,本揭示內容的保護範圍由所附申請專利範圍及其均等物進行界定。 在模型轉換期間追蹤軸
例如,使用諸如Caffe、Torch和Caff2之類的訓練框架來訓練深度學習模型。經訓練的深度學習模型可以在與訓練框架不同的推理引擎(例如,軟體庫)(諸如,snapdragon神經處理引擎(SNPE)庫)上執行。在模型(例如,深度學習模型)在推斷引擎上執行之前,該模型經歷用於從源框架到目標框架的映射操作(諸如迴旋、池化或級聯)的轉換過程。每個特定的框架/推理引擎執行期望以指定的軸順序輸入的操作,並且以固定的軸順序產生輸出。在每個框架中,一或多個輸入和輸出可以是多維的。此外,在每個框架內,與同一框架中的其他操作相比,每個操作可以接收不同的輸入並產生不同的輸出。框架之間的轉換可以是有挑戰性的,並且可能導致計算錯誤。本揭示內容涉及用於例如使用軸的對準,將軸從源框架(例如,訓練框架)轉換到目標框架(例如,推理引擎)的映射過程。
本揭示內容的態樣涉及將源框架映射到目標框架以用於人工神經網路。根據本揭示內容的態樣,可以將源框架的輸入映射為目標框架的輸入,如下所述。
圖1示出根據本揭示內容的某些態樣的使用片上系統(SOC)100的前述映射的示例性實現方式,片上系統100可以包括通用處理器(CPU)或者多核通用處理器(CPU)102。變數(例如,神經信號和突觸權重)、與計算設備相關聯的系統參數(例如,具有權重的神經網路)、延遲、頻率點資訊和任務資訊,可以儲存在與神經處理單元(NPU)108相關聯的記憶體區塊中、與CPU 102相關聯的記憶體區塊中、與圖形處理單元(GPU)104相關聯的記憶體區塊中、與數位訊號處理器(DSP)106相關聯的記憶體區塊中、專用記憶體區塊118中,或者可以分佈在多個區塊中。在通用處理器102處執行的指令可以從與CPU 102相關聯的程式記憶體中載入,或者可以從專用記憶體區塊118中載入。
SOC 100亦可以包括針對特定功能定製的額外的處理區塊,諸如GPU 104、DSP 106、連接區塊110,其可以包括第四代長期進化(4G LTE)連接、非許可的Wi-Fi連接、USB連接、藍芽連接等等,以及可以例如偵測和辨識手勢的多媒體處理器112。在一個實現方式中,NPU實現在CPU、DSP及/或GPU中。SOC 100亦可以包括感測器處理器114、圖像信號處理器(ISP)及/或可以包括全球定位系統的導航器120。
SOC 100可以基於ARM指令集。在本揭示內容的一個態樣中,載入到通用處理器102中的指令可以包括:用於決定源框架的第一軸順序和目標框架的第二軸順序之間的對準的代碼。載入到通用處理器102中的指令亦可以包括用於基於對準、以及第一操作的預期的源軸順序及/或第二操作的預期的目標軸順序,來設置當前目標軸順序的代碼。
圖2示出根據本揭示內容的某些態樣的系統200的示例性實現方式。如圖2中所示,系統200可以具有能夠執行本文所描述的方法的各種操作的多個本端處理單元202。每個本端處理單元202可以包括本端狀態記憶體204和本端參數記憶體206,後者可以儲存神經網路的參數。此外,本端處理單元202可以具有:用於儲存本端模型程式的本端(神經元)模型程式(LMP)記憶體208、用於儲存本端學習程式的本端學習程式(LLP)記憶體210、以及本端連接記憶體212。此外,如圖2中所示,每個本端處理單元202可以與配置處理器單元214接合,以提供用於本端處理單元的本端記憶體的配置,每個本端處理單元202可以與在本端處理單元202之間提供路由的路由連接處理單元216進行接合。
深度學習架構可以藉由進行學習以表示每個層中的抽象的連續更高級別的輸入,從而建立輸入資料的有用特徵表示,來執行物件辨識任務。用此方式,深度學習解決了傳統機器學習的主要瓶頸。在深度學習出現之前,針對目標辨識問題的機器學習方法可能在很大程度上依賴於人體工程特徵,可能與淺層分類器相結合。淺層分類器可以是例如兩類線性分類器,其中可以將特徵向量分量的加權和與閥值進行比較以預測輸入屬於哪個分類。人體工程特徵可以是由具有專業知識的工程師針對特定問題域所定製的範本或核心。相比而言,深度學習架構可以學習表示與人類工程師可能設計的特徵相似的特徵(但是經由訓練)。此外,深度網路可以學習表示和辨識人類可能沒有考慮到的新類型的特徵。
深度學習架構可以學習特徵的層次結構。例如,若呈現有視覺資料,則第一層可以學習來辨識輸入串流中的相對簡單的特徵(例如,邊緣)。在另一實例中,若呈現有聽覺資料,則第一層可以學習來辨識特定頻率中的譜功率。將第一層的輸出作為輸入的第二層,可以學習來辨識特徵的組合,諸如用於視覺資料的簡單形狀或者用於聽覺資料的聲音的組合。例如,較高層可以學習以表示視覺資料中的複雜形狀或者聽覺資料中的單詞。較高層可以學習以辨識常見的視覺物件或者口語片語。
當應用於具有自然分層結構的問題時,深度學習架構可以表現得特別好。例如,機動車輛的分類可以從首次學習中受益以辨識車輪、擋風玻璃和其他特徵。可以在更高層處,以不同的方式對該等特徵進行組合以辨識汽車、卡車和飛機。
神經網路可以設計成具有各種連接模式。在前饋網路中,資訊從較低層傳遞到較高層,其中給定層之每一個神經元向較高層中的神經元進行傳輸。如前述,可以在前饋網路的連續層中建立分層表示。神經網路亦可能具有循環或者回饋(亦稱為自上而下)連接。在循環連接中,來自給定層中的神經元的輸出可以傳輸到同一層中的另一個神經元。循環架構可能有助於辨識跨越多於一個輸入資料區塊的模式,其中該等輸入資料區塊以一序列傳遞到神經網路。從給定層中的神經元到較低層中的神經元的連接稱為回饋(或者自上而下)連接。當對高層概念的辨識可以幫助區分輸入的特定低層特徵時,具有許多回饋連接的網路可能是有用的。
參見圖3A,神經網路的層之間的連接可以是全連接的302,亦可以是局部連接的304。在全連接的網路302中,第一層中的神經元可以將其輸出傳輸到第二層之每一個神經元,使得第二層之每一個神經元將從第一層之每一個神經元接收輸入。替代地,在局部連接的網路304中,第一層中的神經元可以連接到第二層中的有限數量的神經元。迴旋網路306可以是局部連接的,並且亦經配置為使得與針對第二層之每一個神經元的輸入相關聯的連接強度是共用的(例如,308)。更具體而言,可以對網路的局部連接的層進行配置,使得層之每一個神經元將具有相同或者類似的連接模式,但具有可以具有不同的值(例如,310、312、314和316)的連接強度。局部連接的連接模式可以上升到較高層中的空間不同的接收域,這是因為給定區域中的較高層神經元可以接收經由訓練調諧到用於網路的總輸入的受限制部分的性質的輸入。
局部連接的神經網路可能非常適合於其中輸入的空間位置是有意義的問題。例如,經設計成從車載攝像頭辨識視覺特徵的網路300可以取決於其與圖像的較低部分和較高部分的關聯,來開發具有不同性質的高層神經元。與圖像下部相關聯的神經元可以學習以辨識車道標記,例如,而與圖像上部相關聯的神經元可以學習以辨識交通訊號燈、交通標誌等等。
DCN可以使用監督式學習來訓練。在訓練期間,可以向DCN呈現圖像(例如,速度限制標記的裁剪圖像326),並且隨後可以計算「前向傳遞」以產生輸出322。輸出322可以是對應於諸如「符號」、「60」和「100」之類的特徵的值向量。網路設計者可能希望DCN針對輸出特徵向量中的神經元中的一些(例如,與「符號」和「60」相對應的)輸出高分,如針對於已經訓練的網路300的輸出322中圖示的。在訓練之前,由DCN產生的輸出可能是不正確的,並且因此可能會計算實際輸出和目標輸出之間的誤差。隨後,可以調整DCN的權重,使得DCN的輸出分數更接近於與目標對準。
為了調整權重,學習演算法可以計算針對權重的梯度向量。若對權重進行輕微地調整,則梯度可以指示誤差將增加或者減少的量。在頂層處,梯度可以直接對應於:連接倒數第二層中的啟動神經元和輸出層中的神經元的權重的值。在較低層中,梯度可以取決於權重的值以及較高層的計算的誤差梯度。隨後,可以對權重進行調整以減少誤差。此種調整權重的方式可以稱為「反向傳播」,因為其涉及經由神經網路的「反向傳遞」。
實際上,權重的誤差梯度可以經由少量的實例來計算,使得所計算的梯度近似於真實的誤差梯度。此種近似方法可以稱為隨機梯度下降。可以重複隨機梯度下降,直到整個系統的可實現的誤差率已經停止下降,或者直到誤差率達到目標水平為止。
在學習之後,可以向DCN呈現新的圖像326,並且經由網路的正向傳遞可以產生可以被認為是DCN的推斷或者預測的輸出322。
深度信念網路(DBN)是包括多層的隱藏節點的概率模型。DBN可以用於提取訓練資料集的分層表示。可以藉由堆疊多層的受限玻爾茲曼機器(RBM)來獲得DBN。RBM是可以學習一組輸入上的概率分佈的一種類型的人工神經網路。因為RBM可以在沒有關於每個輸入應當被分類到的類別的資訊的情況下學習概率分佈,所以RBM通常用於無監督學習。使用混合的無監督和監督範例,DBN的底部RBM可以以無監督的方式進行訓練,並可以用作特徵提取器,而頂部RBM可以以有監督方式進行訓練(關於來自前一層的輸入和目標類別的聯合分佈),並且可以用作為分類器。
深度迴旋網路(DCN)是迴旋網路的網路,其經配置有另外的池化(pooling)和正規化層。DCN已經在許多任務上取得了最先進的效能。可以使用監督式學習來訓練DCN,在監督式學習中,輸入和輸出目標對於許多實例是已知的,並且用於藉由使用梯度下降方法來修改網路的權重。
DCN可以是前饋網路。另外,如前述,從DCN的第一層中的神經元到下一個較高層中的一組神經元的連接在第一層中的神經元之間共用。DCN的前饋和共用連接可以用於快速處理。例如,DCN的運算負擔可能比包括循環或回饋連接的類似大小的神經網路的運算負擔要小得多。
可以將迴旋網路的每一層的處理認為是空間不變的範本或基礎投影。若首先將輸入分解成多個通道(諸如,彩色圖像的紅色、綠色和藍色通道),則在該輸入上訓練的迴旋網路可以認為是三維的,具有沿著圖像的軸的兩個空間維度和擷取顏色資訊的第三維度。可以考慮迴旋連接的輸出以在後續層318和320中形成特徵圖,其中特徵圖(例如,320)的每個元素從前一層(例如,318)中的一系列神經元以及從多個通道中的每一個接收輸入。特徵圖中的值可以進一步使用非線性(諸如,修正、max(0,x))進行處理。可以對來自相鄰神經元的值進行進一步池化,其對應於向下取樣,並且可以提供另外的局部不變性和維度減少。與白化相對應的正規化亦可以經由特徵圖中的神經元之間的橫向抑制來應用。
深度學習架構的效能可以隨著更多的標識資料點變得可用或者隨著運算能力增加而增加。現代深度神經網路通常使用計算資源進行訓練,其中該等計算資源是僅僅十五年前的典型研究人員可用的計算資源的數千倍。新架構和訓練範式可以進一步提升深度學習的效能。修正後的線性單位可以減少稱為梯度消失的訓練問題。新的訓練技術可能會減少過擬合,從而使較大的模型能夠實現更好的泛化。封裝技術可以抽象給定的接受域中的資料,並進一步提升整體效能。
圖3B是示出一種示例性深度迴旋網路350的方塊圖。深度迴旋網路350可以包括基於連線性和權重共用的多種不同類型的層。如圖3B中所示,示例性深度迴旋網路350包括多個迴旋區塊(例如,C1和C2)。該等迴旋區塊中的每一個可以配置有迴旋層、正規化層(LNorm)和池化層。迴旋層可以包括一或多個迴旋濾波器,其可以應用於輸入資料以產生特徵圖。儘管僅圖示兩個迴旋區塊,但是本揭示內容並不是限制性的,而是相反,根據設計偏好,在深度迴旋網路350中可以包括任何數量的迴旋區塊。正規化層可以用於對迴旋濾波器的輸出進行正規化。例如,正規化層可以提供白化或者橫向抑制。池化層可以在空間上提供向下取樣聚合以用於局部不變性和維度減少。
例如,深度迴旋網路的並行濾波器組可以視情況基於ARM指令集,來載入到SOC 100的CPU 102或GPU 104上,以實現高效能和低功耗。在替代的實施例中,並行濾波器組可以載入在SOC 100的DSP 106或者ISP 116上。另外,DCN可以存取可能存在於SOC上的其他處理區塊(諸如,專用於感測器114和導航120的處理區塊)。
深度迴旋網路350亦可以包括一或多個完全連接的層(例如,FC1和FC2)。深度迴旋網路350可以進一步包括邏輯回歸(LR)層。深度迴旋網路350的每個層之間是要進行更新的權重(未圖示)。每個層的輸出可以用作深度迴旋網路350中的後續層的輸入,以從在第一迴旋區塊C1處提供的輸入資料(例如,圖像、音訊、視訊、感測器資料及/或其他輸入資料)中學習分層特徵表示。
圖4是示出可以對人工智慧(AI)功能進行模組化的示例性軟體架構400的方塊圖。使用該架構,可以設計應用402,其中應用402可以致使SOC 420的各個處理區塊(例如,CPU 422、DSP 424、GPU 426及/或NPU 428)執行在該應用402的執行時操作期間支援運算。
AI應用402可以經配置為調用使用者空間404中定義的功能,例如,該功能可以提供對指示設備當前操作的位置的場景的偵測和辨識。例如,AI應用402可以取決於所辨識的場景是辦公室、演講廳、餐廳還是諸如湖泊之類的戶外設置,來不同地配置麥克風和攝像機。AI應用402可以向與SceneDetect應用程式設計介面(API)406中定義的庫相關聯的已編譯器代碼發出請求,以提供對當前場景的估計。例如,該請求可以最終依賴於經配置為基於視訊和定位資料來提供場景估計的深度神經網路的輸出。
運行時引擎408(其可以是運行時框架的編譯代碼)可以進一步被AI應用402存取。例如,AI應用402可以致使運行時引擎在特定的時間間隔請求場景估計,或者由應用的使用者介面所偵測到的事件來觸發。當被致使用於估計場景時,運行時引擎可以繼而向在SOC 420上運行的作業系統410(諸如,Linux核心412)發送信號。繼而,作業系統410可以致使在CPU 422、DSP 424、GPU 426、NPU 428或者其一些組合上執行運算。可以藉由作業系統直接存取CPU 422,並且可以經由驅動器(例如,用於DSP 424、用於GPU 426或者用於NPU 428的驅動器414-418)來存取其他處理區塊。在示例性實例中,深度神經網路可以經配置為在諸如CPU 422和GPU 426之類的處理區塊的組合上運行,或者可以在NPU 428(若存在的話)上運行。
在一種配置中,機器學習模型經配置為用於決定源框架的第一軸順序和目標框架的第二軸順序之間的對準。機器學習模型亦經配置為用於基於該對準、以及第一操作的預期的源軸順序及/或第二操作的預期的目標軸順序,來設置當前目標軸順序。在一個態樣中,決定構件及/或設置構件可以是經配置為執行所陳述的功能的通用處理器102、與通用處理器102相關聯的程式記憶體、記憶體區塊118、本端處理單元202及/或路由連接處理單元216。在另一種配置中,前述構件可以是經配置為執行該等前述構件所陳述的功能的任何模組或任何裝置。
根據本揭示內容的某些態樣,每個本端處理單元202可以經配置為基於模型的期望的一或多個功能特徵來決定模型的參數,並且隨著對所決定的參數進行進一步調整、調諧和更新,朝著期望的功能特徵來開發該一或多個功能特徵。
在一個實例中,Caffe框架使用四維(4D)張量(tensor)進行具有軸順序(N、C、H、W)的迴旋,其中N是批次/圖像的數量,C是通道的數量,H是空間維度(高度(H)),而W是空間維度(寬度(W))。相比而言,目標庫(例如,snapdragon神經處理引擎(SNPE)庫)可以具有三維(3D)輸入張量(H、W、C),其中軸0為高度(H),軸1為寬度(W),而軸2為通道(C)。亦即,目標庫可能不支援N。因此,在轉換過程期間,可以丟棄N。本揭示內容的態樣提供了Caffe到SNPE轉換的實例。當然,本揭示內容的態樣並不限於所引用的框架,並且可以經設想為用於任何類型的框架之間的轉換。
每個庫可以根據特定的軸順序來讀取輸入張量。例如,如上文論述,在Caffe框架中,讀取具有軸的順序為(N、C、H、W)的輸入張量,其中N是批次數。在Torch框架中,類似於Caffe,將輸入張量讀取成(N、C、H、W)。在TensorFlow開發庫中,將輸入張量讀取成(H、W、C)。本揭示內容的態樣並不限於上述的框架,並且可以設想其他類型的框架。
由於維度順序的此種差異,例如,當遇到具有特定軸參數的層時,轉換器可以將Caffe軸轉換為SNPE軸。在習知系統中,該等層使用軸參數來選擇要對其操作(例如,分片、級聯和Softmax)的維度。
習知的模型轉換使用靜態映射。例如,在從Caffe框架到SNPE框架的模型轉換期間,靜態映射為(0--1、1-2、2-0、3-1)。亦即,將Caffe索引0轉換為SNPE索引-1(例如,從SNPE框架中丟棄),將Caffe索引1轉換為SNPE索引2,將Caffe索引2轉換為SNPE索引0,而將Caffe索引3轉換為SNPE索引1。對於一些操作(諸如,級聯、分片和Softmax)而言,使用靜態映射,使得目標框架在源框架的維度上操作。但是,對於更複雜的模型以及一些操作(例如,置換、重塑和展平),靜態軸映射可能會導致在目標框架上使用錯誤的維度,從而導致運算錯誤。另外,由於維度及/或其他因素中的變化,對於一些操作(諸如,重塑和展平)而言,可能不能導出軸映射。
在源框架和目標框架中支援的每個操作的期望的輸入和輸出軸順序可以是先驗已知的,這是因為每個操作是使用特定的輸入/輸出軸順序實現的。例如,SNPE中的迴旋運算(conv)具有已知(例如,發佈的)輸入軸順序(H、W、C)和已知的輸出軸順序(H、W、C)。輸入軸順序代表輸入到操作中的張量的軸順序,而輸出軸順序代表從操作輸出的張量的軸順序。作為另一實例,在Caffe中,用於迴旋運算的已知輸入軸順序是(N、C、H、W),而已知的輸出軸順序亦是(N、C、H、W)。
圖5A示出根據本揭示內容的態樣的使用軸映射的變換的實例。如圖5A中所示,源框架(例如,Caffe)的置換操作510執行(0、3、2、1)的變換操作。亦即,在置換操作510之後,輸入的維度0是輸出的第一維度502,輸入的維度3是輸出的第二維度504,輸入的維度2是輸出的第三維度506,而輸入的維度1是輸出的第四維度508。
用於目標框架的置換操作512的輸入不同於源框架的置換操作510的輸出。因此,應當針對置換操作510、512執行轉換以具有相同的輸出。基於已知的靜態映射,可以在目標框架(例如,SNPE)中轉換(0、3、2、1)操作,使得置換操作512執行(1、0、2)的變換操作。亦即,在目標框架操作中轉換源框架操作,使得置換操作510、512具有匹配的輸出(例如,(W、H、C))。
從源框架到目標框架的靜態映射假定用於函數/操作(例如,置換)的輸入(例如,輸入張量)始終是相同的。例如,對於Caffe框架而言,靜態映射假定用於函數的輸入為(N、C、H、W)。
圖5B示出根據本揭示內容的態樣的使用軸映射的變換的另一個實例。如圖5B中所示,用於目標框架的置換操作522的輸入與源框架的置換操作520的輸出對準(例如,匹配)。由於源框架的輸出與目標框架的輸入相匹配,所以可以跳過轉換。亦即,轉換可以認為是不可操作的(no-op),這是因為置換順序致使目標框架的輸出與源框架的輸出一致,從而不需要轉換。
圖5C示出應用從源框架到目標框架的轉換的實例。如圖5C中所示,在源框架處執行兩個置換(例如,置換)530、532。源框架的第一置換530對輸入(N、C、H、W)執行變換操作(0、2、3、1)以產生輸出(N、H、W、C)。用於目標框架的第一置換534的輸入與來自源框架的第一置換530的輸出(例如,H、W、C)相同。因此,如先前所論述的,由於匹配的輸入和輸出,因此轉換是no-op的。
源框架的第二置換532對輸入(N、H、W、C)執行變換操作(0、2、1、3)以產生輸出(N、W、H、C)。如先前所論述的,對於Caffe,假定輸入始終是(N、C、H、W)。在該實例中,用於置換的輸入是(N、H、W、C)。由於輸入格式中的改變,因此靜態映射導致源框架的第二置換532的輸出(例如,(N、W、H、C))與目標框架的第二置換536的輸出(例如,(H、C、W))之間的不匹配。
亦即,源框架的第二置換532執行操作(0、2、1、3)。使用Caffe到SNPE的靜態映射(例如,(0- -1、1-2、2-0、3-1)),到目標框架的第二置換536的轉換是(0、2、1)(例如,0映射到-1,2映射到0,1映射到2,以及3映射到1)。當目標框架的第二置換536對輸入(H、W、C)執行操作(0、2、1)時,得到的輸出是(H、C、W),其與源框架的第二置換532的輸出(例如,(N、W、H、C))不匹配。考慮丟棄源框架中的N維度,來自目標框架的第二置換536的預期輸出應當與源框架的第二置換532的輸出(例如,(W、H、C))相匹配。如圖5C的實例中所示,使用靜態映射,多個操作(例如,置換)可能導致映射錯誤。
圖5D示出對展平操作進行轉換的實例。如圖5D中所示,源框架對輸入(N、C、H、W)執行展平操作540。該展平操作包括指示了要進行展平的維度的軸參數。在該實例中,源框架的展平操作540的軸參數是(2),使得第二維度(例如,維度2)和任何後續維度皆被展平。如圖5D中所示,在源框架的輸出中,對維度2(H)和維度3(W)進行展平以形成組合維度(HxW)。在源框架的輸出中,維持源框架的其他維度(例如,維度0(N)和1(C))。
使用靜態映射,將針對目標框架的展平操作542的軸參數設置為(0),使得兩個展平操作540、542皆以高度索引(H)開始。當展平操作的軸參數被設置為0時,對該維度和後續維度(例如,1和2)進行組合(例如,展平)。在該實例中,目標框架的展平操作542的輸出是組合輸入(HxWxC)。如圖5D中所示,用於展平操作的靜態映射導致源框架的輸出(例如,三維輸出張量(N、C、HxW))和目標框架的輸出(例如,一維輸出張量(HxWxC))之間不匹配。
圖5E示出對重塑操作進行轉換的實例。如圖5E中所示,源框架對輸入(N、CxHxW)執行重塑操作550。重塑操作可以用於改變其輸入的維度,而不改變其資料。對於重塑操作而言,僅改變維度;在該過程中不複製資料。重塑操作包括各種參數。0指的是「複製底層的相應維度」。例如,若底部具有兩個作為其第一維度,則頂部亦將具有兩個作為其第一維度,假定零的維度為第一目標維度。-1指的是「從其他維度進行推斷」。計算該維度以保持整體元素計數與底層中的相同。正數代表重塑操作的輸出的維度。在該實例中,源框架的重塑的參數是(0、-1、8)。如圖5E中所示,重塑操作550產生輸出(N、CxHxW/8、8)。
使用靜態映射,將針對目標框架的重塑操作542的軸參數設置為(-1、8)。在該實例中,目標框架的重塑操作552的輸出是(HxWxC/8、8)。如圖5E中所示,用於重塑操作的靜態映射導致源框架的輸出(例如,三維輸出張量(N、CxHxW/8、8))和目標框架的輸出(例如,二維輸出張量(HxWxC/8、8))之間的不匹配。
如圖5A-圖5E中所示,在一些情況下,靜態映射導致源框架的輸出與目標框架的輸出之間的匹配。但是,在一些情況下,可能基於框架的顯式操作而發生不匹配(例如,運算錯誤)。顯式操作代表在模型中指定的操作。本揭示內容的態樣藉由向模型添加隱式操作來緩解不匹配。隱式操作是未在模型中指定的但是被添加以在顯式操作之前或之後對張量的軸順序進行重新排序的操作。在一種配置中,在顯式操作之前,隱式操作對目標框架的張量的維度進行重新排序,以匹配源框架的張量的維度的順序。
用於一些操作的軸順序是先驗已知的。但是,某些操作(諸如,重塑或者展平)將其軸順序發佈成「非平凡」(NT)。當經由操作對軸順序的操作不可追蹤時,將軸順序發佈成「非平凡」。亦即,操作的輸出順序可能不是先驗已知的。例如,基於操作的參數(例如,軸參數),四維(4D)輸入可以變成二維(2D)輸出。具體而言,不可追蹤指的是操作本身,諸如重塑或者展平,其中操作可以以各種方式來操縱軸,使得在該操作之後不能導出軸順序。因此,將此種操作的軸順序發佈成「非平凡」。在其他情況下,某些操作(諸如,置換、級聯(concat)、分片或Softmax)可以接受以任何軸順序的輸入。該等操作可能會導致將軸順序發佈成「任意」。基於作為輸入/輸出的維度的數量,將輸入/輸出軸順序發佈成「任意」。例如,將4D發佈成[任意、任意、任意、任意],將3D發佈成[任意、任意、任意],而將2D發佈成[任意、任意]。任意(ANY)表明給定的操作可以接受任何軸順序的輸入。例如,輸入可以是(HCW)、(WHC)或(NT NT NT)。在一個實例中,級聯操作接受以任何軸順序的輸入,並且其伴隨的軸參數指示用於執行級聯的軸。
隱式操作可以是使用置換操作的收斂或發散。在一種配置中,當遇到不可追蹤操作(例如,重塑或展平)時,執行收斂。亦即,可以執行收斂以在不可追蹤操作之前,將目標框架的當前軸順序與源框架的當前軸順序對準。在一種配置中,經由置換操作來執行收斂。
根據本揭示內容的另一個態樣,在當前狀態不可追蹤時,遇到可追蹤操作(例如,迴旋(conv))時執行發散。在一種配置中,當可追蹤操作指定源框架與目標框架之間的不同預期的輸入軸順序時,執行發散。發散導致目標框架的軸順序從不可追蹤狀態轉換為可追蹤狀態。在一種配置中,經由置換操作來執行強制發散。
在一種配置中,在將輸入軸(例如,張量)輸入到給定操作之前,可以將其軸順序與給定操作的預期輸入軸順序進行比較。若輸入的軸順序與給定操作的預期輸入軸順序相匹配,則可以不執行置換操作。亦即,可以跳過置換,並且可以對當前輸入軸循序執行給定的操作。
如上文所論述的,一些操作可以是可追蹤的。例如,以不同於非平凡的順序來發佈其軸順序的操作,可以認為是可追蹤的。其他操作可以是不可追蹤的。例如,發佈非平凡軸順序的操作可以認為是不可追蹤的。可追蹤操作之後得到的狀態是可追蹤/平凡的,並且在不可追蹤操作之後得到的狀態是不可追蹤/非平凡的。在一種配置中,可追蹤操作可以輸出為不可追蹤操作。例如,可追蹤操作可以輸出三維軸(例如,(H、W、C)),而不可追蹤可以輸出非平凡(NT)輸出(例如,維度可能不是先驗已知的)。例如,該場景可以源自於執行迴旋(例如,可追蹤操作),隨後是重塑(例如,不可追蹤操作)。在將張量輸入到不可追蹤操作之前,對來自於源框架和目標框架的可追蹤操作的當前軸順序輸出進行比較。可以執行置換操作(例如,收斂),以在不可追蹤操作之前將目標軸順序與源軸順序對準。
在另一種配置中,例如,藉由執行諸如重塑操作,隨後是解迴旋(去迴旋)操作之類的操作,不可追蹤操作可以輸出為可追蹤操作。在該配置中,源和目標框架上的解迴旋操作的期望的輸入軸順序是先驗已知的。不可追蹤操作的輸出可以處於非平凡狀態,使得源軸順序和目標軸順序當前對準/收斂。例如,若預期的輸入軸順序是已知的,則可以認為軸順序是非平凡的。
在該實例中,源處的預期軸順序可以是(N、C、H、W),而目標處的預期輸入軸順序是(H、W、C)。在當前實例中,源處的張量的當前軸順序是[非平凡、非平凡、非平凡、非平凡],而目標處的張量的當前軸順序是[非平凡、非平凡、非平凡]。當操作(例如,解迴旋)將其軸順序發佈成平凡的時,基於操作的預期的輸入軸順序(例如,(N、C、H、W)(源)和(H、W、C)(目標))來計算置換順序。可以在目標框架處執行發散,使得將當前軸順序變換為預期的軸順序。在一種配置中,經由置換操作來執行發散。
在另一場景中,可追蹤操作之後可以跟隨另一個可追蹤操作。例如,置換之後可以跟隨迴旋。在該實例中,基於兩個操作的平凡軸順序,可以知道置換輸出的軸順序為(H、W、C),而迴旋接收的軸順序為(C、H、W)。在一種配置中,根據目標張量的當前軸順序和預先發佈的操作的輸入軸順序來計算置換順序,使得在第二可追蹤操作處接收預期軸順序。在該實例中,置換可以是發散的。
圖6A示出根據本揭示內容的態樣的可追蹤操作的實例。如圖6A中所示,源框架(例如,Caffe)包括置換操作602、展平操作604和重塑操作606。目標框架包括與源框架相同的顯式操作(例如,置換608、展平610和重塑612)。置換操作602、608是可追蹤操作。亦即,對置換操作602、608的軸順序進行發佈,使得系統先驗地知道該置換操作的輸出的軸順序。在該實例中,目標框架的置換操作608的輸出軸順序(H、W、C)與源框架的置換操作602的輸出軸順序(N、H、W、C)對準。因此,不指定強制置換(例如,收斂),並且執行no-op。
另外,在該實例中,展平操作604、610跟著置換操作602、608。亦即,該等操作包括跟隨有不可追蹤操作的可追蹤操作。由於源框架和目標框架的軸順序在不可追蹤操作(例如,展平操作604、610)之前是對準的,因此針對目標框架沒有指定收斂或發散,因為其假定目標框架的展平操作610的非平凡(NT)輸出將與源框架的軸順序對準。亦即,因為源框架和目標框架的軸順序在展平操作604、610之前是對準的,所以假定軸順序在展平操作604、610之後將對準。因此,在該實例中,因為源框架和目標框架是對準的,所以目標框架中的展平操作的軸參數不會被操縱。
由於目標框架的展平操作610的輸出是非平凡的,因此假定源框架和目標框架的軸順序在重塑操作606、612之前是對準的。因為重塑操作606、612亦是不可追蹤操作,因此在重塑操作612之前,在目標框架處不執行強制置換。在當前實例中,假定源框架和目標框架的最終輸出將是對準的。
圖6B示出根據本揭示內容的態樣的強制置換的實例。如圖6B中所示,源框架和目標框架包括跟著有重塑626、628的展平622、624的顯式操作。如先前所論述的,展平操作是不可追蹤操作,使得輸出軸順序是非平凡的。在本實例中,在展平操作622、624之前,目標框架的軸順序(H、W、C)與源框架的軸順序(N、C、H、W)不同。由於在展平操作622、624之前未對準的軸順序,因此展平操作622、624的輸出軸順序亦可以是未對準的。因此,在一種配置中,在目標框架的展平操作624之前,在目標框架處指定強制置換630(例如,收斂)。強制置換630意欲在展平操作622、624之前將源框架和目標框架的軸順序進行對準。在該實例中,強制置換630將輸入軸順序(H、W、C)變換為(C、H、W),以便與源框架的軸順序(N、C、H、W)對準。一旦軸順序是對準的,則假定在展平操作622、624之後,軸順序將是對準的。
在當前實例中,目標框架的展平操作624的輸出是非平凡的,因此,假定在重塑操作626、628之前,源框架和目標框架的軸順序是對準的。由於重塑操作626、628亦是不可追蹤操作,因此在重塑操作628之前,在目標框架處不執行強制置換。在當前實例中,假定源框架和目標框架的最終輸出將是對準的。
圖6C示出根據本揭示內容的態樣的強制置換的實例。如圖6C中所示,源框架和目標框架包括展平642、632、重塑634、636和迴旋638、640的顯式操作。如先前所論述的,展平操作是不可追蹤操作,使得輸出軸順序是非平凡的。類似於圖6B的實例,在本實例中,在展平操作630、632之前,目標框架的軸順序(H、W、C)與源框架的軸順序(N、C、H、W)不同。因此,在當前實例中,在目標框架的展平操作632之前,在目標框架處指定強制置換644(例如,收斂)。強制置換644意欲在展平操作642、632之前將源框架和目標框架的軸順序進行對準。在該實例中,強制置換640將輸入軸順序(H、W、C)變換為(C、H、W),以便與源框架的軸順序(N、C、H、W)對準。一旦軸順序是對準的,則假定在展平操作642、632之後,軸順序將是相同的。
在當前實例中,目標框架的展平操作632的輸出是非平凡的。因此,假定在重塑操作634、636之前,源框架和目標框架的軸順序是對準的。由於重塑操作634、636亦是不可追蹤操作,因此在重塑操作636之前,在目標框架處不執行強制置換。
另外,在當前實例中,在重塑634、636之後,執行迴旋638、640。亦即,在不可追蹤操作之後,執行可追蹤操作。由於迴旋638、640是可追蹤的,因此發佈預期的輸入軸順序。在該實例中,用於目標框架的迴旋640的預期的輸入軸順序是(H、W、C)。另外,目標框架的重塑636的輸出是非平凡的,並且假定其與源框架的重塑634的輸出軸順序(N、C、H、W)對準。因此,為了將目標框架的當前軸順序變換為用於迴旋640的預期的軸順序,在迴旋640之前指定強制置換650(例如,發散),以便將當前軸順序變換為迴旋640的預期的軸順序。
本揭示內容的態樣使用張量的當前軸順序的認知,並且可以省略一些操作,其導致提高的處理速度。例如,在單步多盒偵測器(SSD)模型中,在從Caffe到SNPE的模型轉換期間,省略置換操作,這是由於SNPE的軸順序已經具有Caffe框架置換操作將產生的順序。
圖6D圖示根據本揭示內容的態樣的省略置換的實例。如圖6D中所示,源框架可以執行置換660,接著是諸如置換、展平或者重塑之類的第二操作662。在當前實例中,置換660接收輸入(N、C、H、W),並且輸出(N、H、W、C)。此外,目標框架的初始軸順序(例如,當前軸順序)(H、W、C)已經與源框架的置換660的輸出軸順序對準。因此,在該實例中,可以從目標框架中省略源框架的置換660,使得目標框架的初始軸順序直接輸入到目標框架的第二操作664。亦即,在目標框架中的已訓練模型的產生期間,省略置換操作。
在一種配置中,可以將軸順序的狀態儲存在張量及/或記憶體設備中,以便後續使用。當然,這僅僅是示例性的和非限制性的。可以使用操作的輸出軸順序來更新張量的當前軸順序。可以在源和目標二者上執行該更新。
另外,在一些態樣中,伴隨的軸參數可以幫助該操作來挑選要在其上操作的特定維度。例如,對於級聯(concat)操作而言,該軸參數指示將在哪個軸上發生輸入的級聯。在一個實例中,級聯接收三個輸入:維度(5、3、4);(5、3、8)和(5、3、10)。此外,在該實例中,若軸參數是(2),則級聯的輸出變成(5、3、22)。對於分片操作而言,類似地,該軸參數指示將在哪個軸上發生對輸入的分片。例如,分片操作可以接收一個輸入:(10、4、9),並且產生兩個輸出,即使當軸參數指定為(0)時。亦即,分片操作產生兩個輸出:維度(5、4、9)和(5、4、9)。
作為另一實例,若源上的四維(4D)張量的當前軸順序是(N、C、H、W),而目標上的三維(3D)張量的當前軸順序是(H、W、C),則應用於軸被設置為1的源上的張量的級聯操作,可以映射軸被設置為二的目標上的張量上的級聯操作。該軸是指與操作相關聯的軸參數。在另一個實例中,若源上的4D張量的當前軸順序是[非平凡、非平凡、非平凡、非平凡],而目標上的3D張量的當前軸順序是[非平凡、非平凡、非平凡],則軸被設置為1的源上的張量的級聯操作藉由將源軸參數遞減1,來映射軸被設置為零的目標上的張量上的級聯操作。非平凡是指源和目標的軸順序對準。此外,由於目標不支援N維度,因此將軸減1。若目標和源支援相同數量的維度,則被設置為1的源軸將映射到被設置為1的目標軸。
映射或模型轉換可以離線地執行,或者可以在運行時期間(例如,線上地)執行。此外,在一種配置中,目標平臺可以支援多種平臺(諸如,數位訊號處理器(DSP)、圖形處理單元(GPU)、中央處理單元(CPU)和其他平臺)。在該等系統中,可以根據指定的平臺,在運行時動態地執行映射。在運行時期間,可以追蹤每個張量的軸,使得當排程器選擇源平臺上的特定操作時,對該操作進行評估以決定是否針對軸順序來執行資料變換。當預先知道給定平臺上的張量的當前軸順序和排程的操作的預期輸入軸順序時,決定是否執行資料變換是可能的。
以本文所描述的方式映射軸順序,提供了在無需使用者幹預的情況下,基於執行轉換,而使用複雜性增加的模型(例如,使用重塑/展平/置換)。此外,本揭示內容的態樣准許推理引擎/框架選擇其具有特定軸順序的操作的實現方式以使用下層硬體架構,而不管源框架。
圖7A示出基於軸參數的轉換的圖700。圖7A示出在轉換期間,可能出現靜態軸映射的問題的實例。如圖7A中所示,源框架和目標框架可以包括相同的操作(例如,迴旋、置換、展平、級聯)。但是,習知的映射技術可能無法適當地計算使用軸參數的某些操作(諸如,級聯)。
例如,如圖7A中所示,源軸順序和目標軸順序在置換操作702、704之後是對準的(H、W、C)。置換操作702、704中的每一個輸出到展平操作706、708,這兩個操作前面是級聯操作710、712。在該實例中,用於展平操作706和級聯操作710的源框架的軸參數(1)與用於展平操作708和級聯操作712的軸參數(2)不同。軸參數的不同導致源框架的輸出(N(H*W*C))和目標框架的輸出(HW(C))之間的映射錯誤。
圖7B示出根據本揭示內容的態樣的基於軸參數的轉換的圖750。圖7B示出緩解源自於習知轉換的問題的實例。如圖7B中所示,源框架和目標框架對分別具有軸順序(N、C、H、W)和(H、W、C)的輸入張量執行迴旋操作752、754。迴旋754的輸出軸順序與源框架的置換756的輸出軸順序相對準。此外,展平操作758跟隨置換756。由於展平操作758是不可追蹤操作,因此在執行展平操作758、760之前,源軸順序應當與目標軸順序相對準。由於迴旋754的輸出軸順序與源框架的置換756的輸出軸順序相對準,因此在目標框架處可以跳過置換以提高效能。
另外,如當前實例中所示,對目標框架的軸參數進行調整(與圖7A的軸參數進行比較)以對準源框架的輸出和目標框架的輸出。亦即,在目標框架的迴旋754和源框架的置換756之後,將源框架和目標框架二者的軸順序進行對準。因此,藉由從源框架的軸參數中減去一(例如,調整目標框架的軸參數)來計算目標框架的軸參數,這是因為目標框架不支援源框架的(N)參數,(例如,目標框架)比源框架少一個軸。以軸=1來執行源框架的展平操作758,並且以軸=0來執行目標框架的相對應的展平操作760。同樣,目標框架的後續級聯操作在軸=0時執行,這是因為源框架的相對應的級聯操作是在軸=1時執行的。
圖8是示出根據本揭示內容的態樣的用於在模型轉換期間追蹤軸的方法800的示例性流程圖。如圖8的示例性圖中所示,在方塊804處,在網路(802)開始之後,獲得下一個操作(例如,置換、迴旋、重塑、展平)和當前張量(例如,軸順序)。若不存在另外的操作,則到達該網路的結束,並且不執行另外的動作(806)。
在方塊808處,獲得用於操作的預期的源軸順序。另外,在方塊810處,獲得用於該操作的預期的目標軸順序。對於一些操作(諸如,迴旋(conv)),發佈輸入/輸出軸順序。對於其他操作(例如,展平和重塑),輸出軸順序是不可追蹤的。因此,輸入/輸出是非平凡的。但是,對於其他操作(諸如,級聯(concat)),輸入/輸出順序是任何順序。基於該操作、預期的目標軸順序和預期的源軸順序,網路決定是否應當執行當前張量的強制置換(例如,當前目標軸順序)(812)。
若當前源軸順序和目標軸順序在諸如不可追蹤操作之類的操作之前是對準的,則可以不執行強制置換。在另一個實例中,若當前目標軸順序與目標框架處的用於操作(例如,迴旋操作)的預期的目標軸順序對準,則可以不執行強制置換。若不應當執行強制置換,則在目標框架處執行該操作(方塊816)。
若應當執行強制置換,則在方塊814處決定置換順序。作為實例,對於snapdragon神經處理引擎(SNPE)框架而言,根據可能的軸順序之一來決定置換順序:六種可能的置換,(H、W、C);(C);(H、W);(W、H)、(NT、NT、NT);(NT、NT);(NT)。在一個實例中,所決定的置換順序是在不可追蹤操作之前的當前源軸順序和目標軸順序(例如,收斂)的對準。作為另一個實例,所決定的置換順序是當前目標軸順序與用於迴旋(例如,發散)的預期的軸順序的對準。
在方塊818處,執行強制置換操作。在一種配置中,在目標框架處執行置換操作。在執行置換之後,在目標框架處執行該操作(方塊816)。基於該操作,基於該操作的輸出順序來更新當前目標軸順序和源軸順序(方塊820)。在更新當前目標軸順序和源軸順序之後,系統獲得下一個操作和當前軸順序(方塊804)。另外,在可選的配置中,張量的軸順序可以是持久性的(方塊822)。亦即,可以將軸順序寫入到檔/資料庫中。
圖9是示出根據本揭示內容的態樣的用於在模型轉換期間追蹤軸的方法900的示例性流程圖。在方塊902處,獲得操作的目標軸順序和目標張量。此外,在方塊902處,獲得操作的源軸順序和源張量。目標軸順序代表目標框架中的操作的預期的輸入軸順序,而源軸順序代表源框架中的操作的預期的輸入軸順序。張量是在其輸入到操作之前該張量的當前軸順序。在方塊904處,系統決定在輸入到操作之前(例如,當前張量)張量(例如,目標張量)的當前軸順序是否是可追蹤的(例如,先前操作的輸出是可追蹤的(例如,當前軸順序是可追蹤的)。
若張量的軸順序是不可追蹤的,則系統決定該操作是否是可追蹤的(906)。在一些情況下,來自先前操作的輸出是可追蹤的。但是,當前操作是不可追蹤的。例如,即使輸入(例如,來自先前操作的輸出)是可追蹤的,展平操作的輸出亦是不可追蹤的(參見圖6C的元素644和632)。若操作是不可追蹤的,則不執行置換,這是因為當前軸順序在源和目標之間的是對準的(方塊908)。該軸順序是指張量的軸順序。若操作的輸入軸順序是可追蹤的,則計算置換順序,使得在該操作之前,將當前目標軸順序與當前源軸順序進行對準(方塊910)。
如圖9中所示,若當前軸順序是可追蹤的,則系統決定操作的輸入軸順序是否是可追蹤的(912)。若操作的輸入軸順序是不可追蹤的,則計算置換順序以在該操作之前,將當前目標軸順序與當前源軸順序進行對準(方塊916)。若該操作的輸入軸順序是可追蹤的,則決定置換順序,以將當前目標軸順序與目標框架處的該操作的預期的軸順序進行對準(914)。
圖10示出用於將源框架的第一操作映射到目標框架的第二操作以用於人工神經網路的方法1000。第一操作代表源框架的特定操作,並且不限於一系列操作中的第一操作。同樣,第二操作代表目標框架的特定操作,並且不限於一系列操作中的第二操作。在方塊1002中,該處理決定當前源軸順序和當前目標軸順序之間的對準。在方塊1004中,該處理基於該對準、以及第一操作的預期的源軸順序及/或第二操作的預期的目標軸順序,來設置當前目標軸順序。
在可選的配置中,在方塊1006處,該設置包括:執行目標軸順序的強制收斂,以匹配源軸順序。在一種配置中,強制收斂包括在當前目標軸順序是可追蹤的,並且預期的目標軸順序是不可追蹤的時,在目標框架中執行置換操作。可以根據當前源軸順序和當前目標軸順序來決定置換操作順序。
在另一種可選的配置中,在方塊1008處,該設置包括執行與當前源軸順序不對準的當前目標軸順序的強制發散。在一種配置中,該強制發散包括在當前目標軸順序是不可追蹤的,並且預期的目標軸順序是可追蹤的時,在目標框架中執行置換操作。在可選的配置中,在方塊1010處,基於源框架的第一操作的輸入軸順序和目標框架的第二操作的輸入軸順序,來決定置換操作的順序。
在另一種可選的配置中,在方塊1012處,該設置包括維持當前目標軸順序,並且跳過第二操作(例如,第二置換操作)。在一種配置中,在當前目標軸順序與當前源軸順序對準時,跳過第二操作。根據本揭示內容的態樣,目標框架經配置為支援多種平臺,並且該設置是基於所選定的平臺來動態地執行的。
在一些態樣中,方法700、750、800、900和1000可以由SOC 100(圖1)或者系統200(圖2)來執行。亦即,方法700、750、800、900和1000中的元素中的每一個可以是例如但不限於由以下設備來執行:SOC 100或者系統200或者一或多個處理器(例如,CPU 102和本端處理單元202)及/或其中所包括的其他部件。
上面所描述的方法的各種操作可以由能夠執行相對應的功能的任何適當構件來執行。該等構件可以包括各種硬體及/或軟體部件及/或模組,其包括但不限於:電路、特殊應用積體電路(ASIC)或者處理器。通常,在附圖中示出有操作的地方,該等操作可以具有類似地進行編號的相對應的配對的構件加功能部件。
如本文所使用的,術語「決定」涵蓋很多種動作。例如,「決定」可以包括計算、運算、處理、推導、研究、查詢(例如,查閱資料表、資料庫或其他資料結構)、斷定等等。此外,「決定」亦可以包括接收(例如,接收資訊)、存取(例如,存取記憶體中的資料)等等。此外,「決定」可以包括解析、選定、選擇、建立等等。
如本文所使用的,代表項目列表「中的至少一個」的片語是指該等項目的任意組合,其包括單一成員。作為實例,「a、b或c中的至少一個」意欲覆蓋:a、b、c、a-b、a-c、b-c和a‑b‑c。
結合本揭示內容描述的各種說明性的邏輯區塊、模組和電路可以利用經設計為執行本文所述功能的通用處理器、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯裝置(PLD)、個別閘門或者電晶體邏輯、個別硬體部件或者其任意組合來實現或執行。通用處理器可以是微處理器,但是在替代方案中,該處理器亦可以是任何商業可用處理器、控制器、微控制器或者狀態機。處理器亦可以實現為計算設備的組合,例如,DSP和微處理器的組合、複數個微處理器、一或多個微處理器與DSP核心的結合,或者任何其他此種配置。
結合本揭示內容描述的方法的步驟或者演算法可直接體現在硬體、由處理器執行的軟體模組或二者組合中。軟體模組可以位於本領域已知的任何形式的儲存媒體中。可以使用的儲存媒體的一些實例包括:隨機存取記憶體(RAM)、唯讀記憶體(ROM)、快閃記憶體、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、暫存器、硬碟、可移除磁碟、CD-ROM等等。軟體模組可以包括單一指令或多個指令,並且可以分佈在一些不同的程式碼片段上、分佈在不同的程式中和分佈在多個儲存媒體中。儲存媒體可以耦接至處理器,使得處理器能夠從該儲存媒體讀取資訊,且可向該儲存媒體寫入資訊。在替代方案中,儲存媒體亦可以是處理器的組成部分。
本文所揭示的方法包括用於實現所描述方法的一或多個步驟或動作。在不脫離申請專利範圍的保護範圍的情況下,該等方法步驟及/或動作可以彼此互換。換言之,除非指定步驟或動作的特定順序,否則在不脫離申請專利範圍的保護範圍的情況下,可以修改特定步驟及/或動作的順序及/或使用。
所描述功能可以實現在硬體、軟體、韌體或者其任意組合中。當實現在硬體中時,一種示例性硬體配置可以包括設備中的處理系統。該處理系統可以使用匯流排架構來實現。取決於該處理系統的具體應用和整體設計約束,匯流排可以包括任意數量的互連匯流排和橋接。匯流排可以將包括處理器、機器可讀取媒體和匯流排介面的各種電路連結在一起。匯流排介面可以用於經由匯流排,將網路配接器等等連接到處理系統。網路配接器可以用於實現信號處理功能。對於某些態樣,亦可以將使用者介面(例如,鍵盤、顯示器、滑鼠、操縱桿等等)連接到匯流排。匯流排亦連結諸如時序源、周邊設備、電壓調節器、電源管理電路等等之類的各種其他電路,其中該等電路是本領域所熟知的,並且因此沒有做任何進一步的描述。
處理器可以負責管理匯流排和通用處理,其包括執行儲存在機器可讀取媒體上的軟體。處理器可以使用一或多個通用處理器及/或專用處理器來實現。實例包括微處理器、微控制器、DSP處理器和能夠執行軟體的其他電路。軟體應當被廣義地解釋為意謂指令、資料或者其任意組合,無論其被稱為軟體、韌體、中介軟體、微代碼、硬體描述語言還是其他術語。舉例而言,機器可讀儲存媒體可以包括隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、暫存器、磁碟、光碟、硬碟或者任何其他適當的儲存媒體、或者其任意組合。機器可讀取媒體可以體現在電腦程式產品中。電腦程式產品可以包括封裝材料。
在硬體實現方式中,機器可讀取媒體可以是與處理器分離的處理系統的一部分。但是,如本領域一般技藝人士所應當容易意識到的,機器可讀取媒體或者其任何部分可以在處理系統之外。舉例而言,機器可讀取媒體可以包括傳輸線、由資料調制的載波波形及/或與設備分離的電腦產品,所有該等皆可由處理器經由匯流排介面來存取。替代地或者另外地,機器可讀取媒體或者其任何部分可以是處理器的組成部分,諸如,該情況可以是具有快取記憶體及/或通用暫存器檔。儘管將所論述的各個部件描述成具有特定的位置(諸如,本端部件),但其亦可以以各種方式進行配置,諸如,某些部件經配置成分散式運算系統的一部分。
可以將處理系統配置成如下的通用處理系統,其具有提供處理器功能的一或多個微處理器和提供機器可讀取媒體的至少一部分的外部記憶體,所有該等部件經由外部匯流排架構與其他支援電路連結在一起。替代地,處理系統可以包括用於實現本文所描述的神經元模型和神經系統的模型的一或多個神經形態處理器。作為另外的替代,處理系統可以使用特殊應用積體電路(ASIC)實現,其具有處理器、匯流排介面、使用者介面、支援電路和集成到單一晶片中的機器可讀取媒體的至少一部分,或者使用一或多個現場可程式設計閘陣列(FPGA)、可程式設計邏輯裝置(PLD)、控制器、狀態機、門邏輯、分離硬體部件、或者任何其他適當的電路或者能夠執行貫穿本揭示內容描述的各種功能的電路的任意組合來實現。本領域一般技藝人士應當認識到,如何取決於具體的應用和對整個系統所施加的整體設計約束,來最好地實現針對該處理系統的所描述功能。
機器可讀取媒體可以包括多個軟體模組。該等軟體模組包括指令,該等指令當由處理器執行時,致使處理系統執行各種功能。軟體模組可以包括傳輸模組和接收模組。每一個軟體模組可以位於單一儲存裝置中,亦可以分佈在多個儲存裝置之中。舉例而言,當觸發事件發生時,可以將軟體模組從硬碟載入RAM中。在軟體模組的執行期間,處理器可以將該等指令中的一些載入快取記憶體中,以增加存取速度。隨後,可以將一或多個快取記憶體線載入通用暫存器檔中以用於由處理器執行。當代表下文的軟體模組的功能時,應當理解的是,在執行來自該軟體模組的指令時,由處理器實現該功能。此外,應當意識到的是,本揭示內容的態樣導致實現該等態樣的處理器、電腦、機器或者其他系統的功能的改進。
當在軟體中實現時,可以將該等功能儲存為電腦可讀取媒體上的一或多個指令或代碼或者作為電腦可讀取媒體上的一或多個指令或代碼進行傳輸。電腦可讀取媒體包括電腦儲存媒體和通訊媒體,通訊媒體包括便於將電腦程式從一個地方向另一個地方傳送的任何媒體。儲存媒體可以是可以由電腦存取的任何可用媒體。舉例而言但非做出限制,此種電腦可讀取媒體可以包括RAM、ROM、EEPROM、CD-ROM或者其他光碟儲存裝置、磁碟儲存裝置或者其他磁儲存裝置、或者能夠用於攜帶或儲存具有指令或資料結構形式的期望的程式碼並能夠由電腦存取的任何其他媒體。此外,可以將任何連接適當地稱作電腦可讀取媒體。例如,若軟體是使用同軸電纜、光纖電纜、雙絞線、數位用戶線路(DSL)或者諸如紅外線(IR)、無線電和微波之類的無線技術,從網站、伺服器或其他遠端源傳輸的,則該同軸電纜、光纖電纜、雙絞線、DSL或者諸如紅外線、無線電和微波之類的無線技術包括在該媒體的定義中。如本文所使用的,磁碟和光碟包括壓縮光碟(CD)、鐳射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光®光碟,其中磁碟通常磁性地複製資料,而光碟則用鐳射來光學地複製資料。因此,在一些態樣中,電腦可讀取媒體可以包括非暫時性電腦可讀取媒體(例如,有形媒體)。此外,對於其他態樣而言,電腦可讀取媒體可以包括暫時性電腦可讀取媒體(例如,信號)。上述的組合亦應當包括在電腦可讀取媒體的保護範圍之內。
因此,某些態樣可以包括用於執行本文所提供的操作的電腦程式產品。例如,該電腦程式產品可以包括其上儲存有指令(及/或編碼有指令)的電腦可讀取媒體,該等指令可由一或多個處理器執行,以執行本文所描述的操作。對於某些態樣,電腦程式產品可以包括封裝材料。
此外,應當意識到的是,用於執行本文所述方法和技術的模組及/或其他適當構件可以經由使用者終端及/或基地台依須求地進行下載及/或以其他方式獲得。例如,此種設備可以耦接至伺服器,以便有助於用於執行本文所述方法的構件的傳送。替代地,本文所描述的各種方法可以經由儲存構件(例如,RAM、ROM、諸如壓縮光碟(CD)或軟碟之類的實體儲存媒體等等)來提供,使得使用者終端及/或基地台可以在將儲存構件耦接至或提供給該設備之後,獲得各種方法。此外,亦可以利用向設備提供本文所述方法和技術的任何其他適當技術。
應當理解的是,申請專利範圍並不受限於上文示出的精確配置和部件。在不脫離申請專利範圍的保護範圍的情況下,可以對前述方法和裝置的佈置、操作和細節做出各種修改、改變和變化。
100‧‧‧片上系統
102‧‧‧通用處理器
104‧‧‧圖形處理單元
106‧‧‧數位訊號處理器
108‧‧‧神經處理單元
110‧‧‧連接區塊
112‧‧‧多媒體處理器
114‧‧‧感測器處理器
116‧‧‧ISP
118‧‧‧專用記憶體區塊
120‧‧‧導航器
200‧‧‧系統
202‧‧‧本端處理單元
204‧‧‧本端狀態記憶體
206‧‧‧本端參數記憶體
208‧‧‧本端模型程式記憶體
210‧‧‧本端學習程式記憶體
212‧‧‧本端連接記憶體
214‧‧‧配置處理器單元
216‧‧‧路由連接處理單元
300‧‧‧網路
302‧‧‧全連接
304‧‧‧局部連接
306‧‧‧迴旋網路
308‧‧‧共用
310‧‧‧值
312‧‧‧值
314‧‧‧值
316‧‧‧值
318‧‧‧層
320‧‧‧層
322‧‧‧輸出
326‧‧‧圖像
350‧‧‧深度迴旋網路
400‧‧‧軟體架構
402‧‧‧應用
404‧‧‧使用者空間
406‧‧‧應用程式設計介面
408‧‧‧運行時引擎
410‧‧‧作業系統
412‧‧‧Linux核心
414‧‧‧驅動器
416‧‧‧驅動器
418‧‧‧驅動器
420‧‧‧SOC
422‧‧‧CPU
424‧‧‧DSP
426‧‧‧GPU
428‧‧‧NPU
502‧‧‧第一維度
504‧‧‧第二維度
506‧‧‧第三維度
508‧‧‧第四維度
510‧‧‧置換操作
512‧‧‧置換操作
520‧‧‧置換操作
522‧‧‧置換操作
530‧‧‧置換
532‧‧‧置換
534‧‧‧第一置換
536‧‧‧第二置換
540‧‧‧展平操作
542‧‧‧展平操作
550‧‧‧重塑操作
552‧‧‧重塑操作
602‧‧‧置換操作
604‧‧‧展平操作
606‧‧‧重塑操作
608‧‧‧置換
610‧‧‧展平
612‧‧‧重塑
622‧‧‧展平
624‧‧‧展平
626‧‧‧重塑操作
628‧‧‧重塑操作
630‧‧‧展平
632‧‧‧展平
634‧‧‧重塑
636‧‧‧重塑
638‧‧‧迴旋
640‧‧‧迴旋
642‧‧‧展平
644‧‧‧強制置換
650‧‧‧強制置換
660‧‧‧置換
662‧‧‧第二操作
664‧‧‧第二操作
700‧‧‧方法
702‧‧‧置換操作
704‧‧‧置換操作
706‧‧‧展平操作
708‧‧‧展平操作
710‧‧‧級聯操作
712‧‧‧級聯操作
750‧‧‧方法
752‧‧‧迴旋操作
754‧‧‧迴旋操作
756‧‧‧置換
758‧‧‧展平操作
760‧‧‧展平操作
800‧‧‧方法
802‧‧‧方塊
804‧‧‧方塊
806‧‧‧方塊
808‧‧‧方塊
810‧‧‧方塊
812‧‧‧方塊
814‧‧‧方塊
816‧‧‧方塊
818‧‧‧方塊
820‧‧‧方塊
822‧‧‧方塊
900‧‧‧方法
902‧‧‧方塊
904‧‧‧方塊
906‧‧‧方塊
908‧‧‧方塊
910‧‧‧方塊
912‧‧‧方塊
914‧‧‧方塊
916‧‧‧方塊
1000‧‧‧方法
1002‧‧‧方塊
1004‧‧‧方塊
1006‧‧‧方塊
1008‧‧‧方塊
1010‧‧‧方塊
1012‧‧‧方塊
C1‧‧‧迴旋區塊
C2‧‧‧迴旋區塊
根據下文闡述的實施方式,當結合附圖時,本揭示內容的特徵、本質和優點將變得更加顯而易見,其中貫穿所有附圖的相同元件符號標識相對應的部件。
圖1示出根據本揭示內容的某些態樣的使用片上系統(SOC)(其包括通用處理器)來設計神經網路的示例性實現方式。
圖2示出根據本揭示內容的態樣的系統的示例性實現方式。
圖3A是示出根據本揭示內容的態樣的神經網路的圖。
圖3B是示出根據本揭示內容的態樣的示例性深度迴旋網路(DCN)的方塊圖。
圖4是示出根據本揭示內容的態樣的可以使人工智慧(AI)功能模組化的示例性軟體架構的方塊圖。
圖5A、圖5B、圖5C、圖5D和圖5E是示出示例性源框架到目標框架轉換的圖。
圖6A、圖6B、圖6C和圖6D是示出根據本揭示內容的態樣的示例性源框架到目標框架轉換的圖。
圖7A和圖7B是示出根據本揭示內容的態樣的基於軸參數的示例性轉換的圖。
圖8和圖9是示出根據本揭示內容的態樣的用於在模型轉換期間追蹤軸的方法的示例性流程圖。
圖10是示出根據本揭示內容的態樣的用於將源框架的第一操作映射到目標框架的第二操作以用於人工神經網路的方法。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無

Claims (32)

  1. 一種將一源框架的一第一操作映射到一目標框架的一第二操作以用於一人工神經網路的方法,該方法包括以下步驟: 決定一當前源軸順序和一當前目標軸順序之間的一對準;及基於該對準、以及該第一操作的一預期的源軸順序、該第二操作的一預期的目標軸順序或者一其組合中的至少一個,來設置該當前目標軸順序。
  2. 如請求項1所述之方法,其中設置該當前目標軸順序包括:執行該當前目標軸順序的一強制收斂以匹配該當前源軸順序。
  3. 如請求項2所述之方法,其中執行該強制收斂包括:當該當前目標軸順序是可追蹤的並且該預期的目標軸順序是不可追蹤的時,在該目標框架中執行一置換操作,其中一置換操作順序是根據該當前源軸順序和該當前目標軸順序來計算的。
  4. 如請求項1所述之方法,其中設置該當前目標軸順序包括:執行與該當前源軸順序不對準的該當前目標軸順序的一強制發散。
  5. 如請求項4所述之方法,其中執行該強制發散包括:當該當前目標軸順序是不可追蹤的並且該預期的目標軸順序是可追蹤的時,在該目標框架中執行一置換操作。
  6. 如請求項5所述之方法,進一步包括基於該源框架的該第一操作的一源輸入軸順序和該目標框架的該第二操作的一目標輸入軸順序,來決定用於該置換操作的一順序。
  7. 如請求項1所述之方法,其中設置該當前目標軸順序包括:當該當前目標軸順序與該當前源軸順序對準時,維持該當前目標軸順序並且跳過該第二操作。
  8. 如請求項1所述之方法,其中該目標框架支援多種平臺,並且設置該當前目標軸順序是基於一選擇的平臺而在運行時動態地執行的。
  9. 一種用於將一源框架的一第一操作映射到一目標框架的一第二操作以用於一人工神經網路的裝置,該裝置包括: 用於決定一當前源軸順序和一當前目標軸順序之間的一對準的構件;及用於基於該對準、以及該第一操作的一預期的源軸順序、該第二操作的一預期的目標軸順序或者一其組合中的至少一個,來設置該當前目標軸順序的構件。
  10. 如請求項9所述之裝置,其中用於設置的該構件包括:用於執行該當前目標軸順序的一強制收斂以匹配該當前源軸順序的構件。
  11. 如請求項10所述之裝置,其中用於執行該強制收斂的該構件包括:用於當該當前目標軸順序是可追蹤的並且該預期的目標軸順序是不可追蹤的時,在該目標框架中執行一置換操作的構件,其中一置換操作順序是根據該當前源軸順序和該當前目標軸順序來計算的。
  12. 如請求項9所述之裝置,其中用於設置的該構件包括:用於執行與該當前源軸順序不對準的該當前目標軸順序的一強制發散的構件。
  13. 如請求項12所述之裝置,其中用於執行該強制發散的該構件包括:用於當該當前目標軸順序是不可追蹤的並且該預期的目標軸順序是可追蹤的時,在該目標框架中執行一置換操作的構件。
  14. 如請求項13所述之裝置,進一步包括用於基於該源框架的該第一操作的一源輸入軸順序和該目標框架的該第二操作的一目標輸入軸順序,來決定用於該置換操作的一順序的構件。
  15. 如請求項9所述之裝置,其中用於設置的該構件包括:用於當該當前目標軸順序與該當前源軸順序對準時,維持該當前目標軸順序並且跳過該第二操作的構件。
  16. 如請求項9所述之裝置,其中該目標框架支援多種平臺,並且用於設置的該構件是基於一選擇的平臺而在運行時動態地執行的。
  17. 一種用於將一源框架的一第一操作映射到一目標框架的一第二操作以用於一人工神經網路的裝置,該裝置包括: 一記憶體;及耦接到該記憶體的至少一個處理器,該至少一個處理器經配置為:決定一當前源軸順序和一當前目標軸順序之間的一對準;及基於該對準、以及該第一操作的一預期的源軸順序、該第二操作的一預期的目標軸順序或者一其組合中的至少一個,來設置該當前目標軸順序。
  18. 如請求項17所述之裝置,其中該至少一個處理器經配置為:執行該當前目標軸順序的一強制收斂以匹配該當前源軸順序。
  19. 如請求項18所述之裝置,其中該至少一個處理器經配置為:當該當前目標軸順序是可追蹤的並且該預期的目標軸順序是不可追蹤的時,在該目標框架中執行一置換操作,其中一置換操作順序是根據該當前源軸順序和該當前目標軸順序來計算的。
  20. 如請求項17所述之裝置,其中該至少一個處理器經配置為:執行與該當前源軸順序不對準的該當前目標軸順序的一強制發散。
  21. 如請求項20所述之裝置,其中該至少一個處理器經配置為:當該當前目標軸順序是不可追蹤的並且該預期的目標軸順序是可追蹤的時,在該目標框架中執行一置換操作。
  22. 如請求項21所述之裝置,其中該至少一個處理器經配置為:基於該源框架的該第一操作的一源輸入軸順序和該目標框架的該第二操作的一目標輸入軸順序,來決定用於該置換操作的一順序。
  23. 如請求項17所述之裝置,其中該至少一個處理器經配置為:當該當前目標軸順序與該當前源軸順序對準時,維持該當前目標軸順序並且跳過該第二操作。
  24. 如請求項17所述之裝置,其中: 該目標框架支援多種平臺,以及該至少一個處理器經配置為:基於一選擇的平臺而在運行時動態地設置該當前目標軸順序。
  25. 一種具有其上記錄有程式碼的非暫時性電腦可讀取媒體,該程式碼用於將一源框架的一第一操作映射到一目標框架的一第二操作以用於一人工神經網路,該程式碼由至少一個處理器執行,並且包括: 用於決定一當前源軸順序和一當前目標軸順序之間的一對準的程式碼;及用於基於該對準、以及該第一操作的一預期的源軸順序、該第二操作的一預期的目標軸順序或者一其組合中的至少一個,來設置該當前目標軸順序的程式碼。
  26. 如請求項25所述之非暫時性電腦可讀取媒體,其中用於設置該當前目標軸順序的該程式碼進一步包括:用於執行該當前目標軸順序的一強制收斂以匹配該當前源軸順序的程式碼。
  27. 如請求項26所述之非暫時性電腦可讀取媒體,其中用於執行該強制收斂的該程式碼包括:用於當該當前目標軸順序是可追蹤的並且該預期的目標軸順序是不可追蹤的時,在該目標框架中執行一置換操作的程式碼,其中一置換操作順序是根據該當前源軸順序和該當前目標軸順序來計算的。
  28. 如請求項25所述之非暫時性電腦可讀取媒體,其中用於設置該當前目標軸順序的該程式碼包括:用於執行與該當前源軸順序不對準的該當前目標軸順序的一強制發散的程式碼。
  29. 如請求項28所述之非暫時性電腦可讀取媒體,其中用於執行該強制發散的該程式碼包括:用於當該當前目標軸順序是不可追蹤的並且該預期的目標軸順序是可追蹤的時,在該目標框架中執行一置換操作的程式碼。
  30. 如請求項29所述之非暫時性電腦可讀取媒體,進一步包括用於基於該源框架的該第一操作的一源輸入軸順序和該目標框架的該第二操作的一目標輸入軸順序,來決定用於該置換操作的一順序的程式碼。
  31. 如請求項25所述之非暫時性電腦可讀取媒體,其中用於設置該當前目標軸順序的該程式碼包括:用於當該當前目標軸順序與該當前源軸順序對準時,維持該當前目標軸順序並且跳過該第二操作的程式碼。
  32. 如請求項25所述之非暫時性電腦可讀取媒體,其中該目標框架支援多種平臺,並且用於設置該當前目標軸順序的該程式碼是基於一選擇的平臺而在運行時動態地執行的。
TW107106112A 2017-03-28 2018-02-23 用於在模型轉換期間追蹤軸的方法、裝置及電腦可讀取媒體 TWI738974B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762477918P 2017-03-28 2017-03-28
US62/477,918 2017-03-28
US15/702,503 2017-09-12
US15/702,503 US10902312B2 (en) 2017-03-28 2017-09-12 Tracking axes during model conversion

Publications (2)

Publication Number Publication Date
TW201839676A true TW201839676A (zh) 2018-11-01
TWI738974B TWI738974B (zh) 2021-09-11

Family

ID=63670671

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107106112A TWI738974B (zh) 2017-03-28 2018-02-23 用於在模型轉換期間追蹤軸的方法、裝置及電腦可讀取媒體

Country Status (4)

Country Link
US (1) US10902312B2 (zh)
CN (1) CN110520835B (zh)
TW (1) TWI738974B (zh)
WO (1) WO2018182878A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210256427A1 (en) * 2018-06-21 2021-08-19 Google Llc Automated Computer Operating System Optimization
CN110532291B (zh) * 2019-07-25 2022-07-12 中国科学院计算技术研究所 基于最小执行代价的深度学习框架间模型转换方法及系统
CN110852449B (zh) * 2019-11-25 2023-11-14 北京百度网讯科技有限公司 模型迁移方法和电子设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7133041B2 (en) * 2000-02-25 2006-11-07 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US20050180676A1 (en) * 2004-02-12 2005-08-18 Panorama Flat Ltd. Faraday structured waveguide modulator
CN101194437A (zh) * 2004-08-26 2008-06-04 同流技术控股有限公司 波形矩阵力学方法及装置
US20090058315A1 (en) * 2007-08-27 2009-03-05 Permalight (Asia)Co., Ltd. Control module
US8346819B2 (en) * 2008-12-22 2013-01-01 Sap Ag Enhanced data conversion framework
US9164738B2 (en) * 2009-07-01 2015-10-20 International Business Machines Corporation Database mapping of models for reporting tools in model driven development
US8781737B2 (en) * 2009-11-20 2014-07-15 Qualcomm Incorporated Spatial alignment determination for an inertial measurement unit (IMU)
US8775341B1 (en) * 2010-10-26 2014-07-08 Michael Lamport Commons Intelligent control with hierarchical stacked neural networks
US8799693B2 (en) * 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
CN102394710A (zh) * 2011-11-03 2012-03-28 南昌大学 基于反演模式的电波传播预测方法
US9258550B1 (en) * 2012-04-08 2016-02-09 Sr2 Group, Llc System and method for adaptively conformed imaging of work pieces having disparate configuration
AU2012216490B2 (en) * 2012-08-29 2014-07-03 Konami Gaming, Incorporated Game machine, and control method of controlling computer and computer program used therefor
CN103531205B (zh) * 2013-10-09 2016-08-31 常州工学院 基于深层神经网络特征映射的非对称语音转换方法
US10223635B2 (en) * 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
US10515304B2 (en) * 2015-04-28 2019-12-24 Qualcomm Incorporated Filter specificity as training criterion for neural networks
US10489703B2 (en) 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
JP6662902B2 (ja) 2015-06-05 2020-03-11 グーグル エルエルシー 空間的変換モジュール
JP6745019B2 (ja) * 2015-10-29 2020-08-26 株式会社Preferred Networks 情報処理装置及び情報処理方法

Also Published As

Publication number Publication date
CN110520835A (zh) 2019-11-29
US10902312B2 (en) 2021-01-26
US20180285717A1 (en) 2018-10-04
WO2018182878A1 (en) 2018-10-04
CN110520835B (zh) 2023-11-24
TWI738974B (zh) 2021-09-11

Similar Documents

Publication Publication Date Title
US10510146B2 (en) Neural network for image processing
CN107209873B (zh) 用于深度卷积网络的超参数选择
JP7037478B2 (ja) 分類のための強制的なスパース性
JP6869948B2 (ja) ニューラルネットワークにおける転移学習
US11609623B2 (en) Ultra-low power neuromorphic artificial intelligence computing accelerator
JP6862426B2 (ja) トレーニングされた機械学習モデルのパフォーマンスを改善するための方法
JP6732795B2 (ja) 深層畳み込みネットワークにおいて画像解像度を低減すること
TW201627923A (zh) 模型壓縮和微調
CN111052151B (zh) 基于关注提议进行视频动作定位
JP2018514852A (ja) 逐次画像サンプリングおよび微調整された特徴の記憶
TW201706918A (zh) 作爲供神經網路的訓練準則的濾波器特異性
EP3785176A1 (en) Learning a truncation rank of singular value decomposed matrices representing weight tensors in neural networks
TW202125339A (zh) 經由調整記憶體內計算陣列的列閾值來執行xnor等效運算
TW202125286A (zh) 以記憶體內計算陣列進行神經網路的迴旋層的並行處理
TW202020748A (zh) 遞迴多保真度行為預測
CN111065999B (zh) 移动设备的功率状态控制
TW201633181A (zh) 用於經非同步脈衝調制的取樣信號的事件驅動型時間迴旋
TW201839676A (zh) 在模型轉換期間追蹤軸
US20210373961A1 (en) Neural network graph partitioning for improved use of hardware resources
CN116235220A (zh) 基于多模态表示的事件定位
US20240070441A1 (en) Reconfigurable architecture for fused depth-wise separable convolution (dsc)
US20240037150A1 (en) Scheduling optimization in sequence space
JP2024509862A (ja) ビデオ処理における改善された時間的一貫性のための効率的なテスト時間適応
CN116457842A (zh) 用于高效视频处理的跳跃卷积
WO2021247944A1 (en) Federated mixture models