ArrayFire 向量化陣列 2

2022-04-28 22:54:26 字數 1696 閱讀 2964

在程式設計中我們經常會合併某個矩陣,通常我們會使用迴圈來實現,然而迴圈有時候會降低程式執行的效率,

所以利用arrayfire中的向量的平坦模式,我們可以利用空間來換取時間。主要的思路是:

1.我們將m*n的矩陣展開成乙個1*(m*n)或者(m*n)*1的向量;

2.同理我們將p*q的矩陣展開成乙個1*(p*q)或者(p*q)*1的向量;

3.我們再次定義乙個向量x=((p*q):(m*n))或x=((m*n):(p*q))將上述兩個向量合併到一起;

4.現在我得到了乙個一維的目標向量,現在我們要將這個目標向量拆開成a*b的目標矩陣,具體的做法是

再次定義乙個f(a*b)的目標矩陣,將x向量的賦值給目標矩陣就可以實現了。

這樣我們就不用使用迴圈來實現了,利用向量化的思路實現了空間換取時間。

**如下:

#include "

cuda_runtime.h

"#include

"device_launch_parameters.h

"#include

#include

#include

using

namespace

af;int main(void

) ;

float h_b = ;

float h_c = ;

float h_d = ;

float dt = 1.0f

; array d_b(

3, 2, h_a); //

' array d_d(2, 2

, h_b);

array d_c(

2, 3, h_c); //

' array d_a(3, 3

, h_d);

array d_r;

//merge array_1

array d_f = af::join(0

, af::flat((d_a)), af::flat((d_b)));

float *yptr = d_f.device();

array d1_order(

3, 5

, yptr);

//d_order = transpose(d_order);

//merge array_2

array d_g = af::join(0

, af::flat((d_c)), af::flat((d_d)));

float *gptr = d_g.device();

array d2_order(

2, 5

, gptr);

//merge array_3

array d_k = af::join(0

, af::flat(transpose(d1_order)), af::flat(transpose(d2_order)));

float *kptr = d_k.device();

array d_order(

5, 5

, kptr);

d_order =transpose(d_order);

af_print(d1_order);

af_print(d2_order);

af_print((d_order));

return0;

}

merge

在vs2017上執行如下:

文字向量化

table of contents概述 word2vec nnlm c wcbow and skip gram doc2vec str2vec 文字表示是自然語言處理中的基礎工作,文字表示的好壞直接影響到整個自然語言處理系統的效能。文字向量化就是將文字表示成一系列能夠表達文字語義的向量,是文字表示的...

文字向量化

文字向量化,就是把文字轉化為向量形式。這裡用兩種方式實現本文向量,一種是tf方式,一種是tf idf方式,且這裡向量的長度就是字典的長度。計算兩個向量余弦相似度import math defcount cos similarity vec 1,vec 2 if len vec 1 len vec 2...

ArcMap 2 資料向量化

前言 gis專業的同學或與gis接觸的專業或其它,應該了解到資料的 向量化 的不 酸 易 爽 以目前博主的水平,本文暫時只能提供兩種資料 向量化 的方式。大家有好的方法或以後我接觸的更多,會再次更新本博文。該部落格的系列文章都會時常更新,離不開大家的建議。本篇博文內容如下 配準 向量化 柵格資料 t...