增加計算單位數,可以加快計算速度。
計算單位 從 iwidth * iheight 增加到 iwidth * iheight * outnum:
mnumgroupsx = iwidth;
int xsize = iheight;
mnumgroupsy = outnum;
mnumgroupsz = 1;//innum;
if (iheight > 1024)
printf("高度太大,不支援\n");
else
textureparameters.shader_source = shadersource(xsize, 1);
著 色器:
#version 430 core
layout (local_size_x = local_size_x, local_size_y = local_size_y, local_size_z = 1) in;
uniform int w;
uniform int h;
//輸入
uniform int innum;
//輸出
uniform int outnum;
//偏置
uniform float bias[64];
//啟用
uniform int active;
// 傳遞卷積核
uniform int kw;
layout(std430, binding = 0) buffer bufferobject
;void main(void)
k_index++;
}} }
fsum += bias[o];//加偏置
//relu啟用
if (active == 1)
fsum = (fsum > 0.0) ? fsum : 0.0;//
all[o*wh + iy*w + ix] = fsum;
}
其它同前一文。
結束。
GLSL層卷積(紋理陣列)
在 opengl 紋理陣列 一文中看到紋理陣列只用乙個紋理物件就可以載入多個通道資料。在層卷積中能減少著色器執行次數。把輸入的多通道資料載入乙個紋理陣列中 int loadgltextures arrayg float ptexdata,int num 層卷積 核資料,核寬,輸入維度,輸出維度,偏置...
GLSL層卷積(快取物件)
在第11課 11.2 01bufferobject 中講了 著色器可以對 快取物件 讀寫。我們的層卷積中,也用乙個 快取物件 傳送全部卷積核,並 卷積結果 前半部分結果,後半部分核 核資料,核寬,輸入維度,輸出維度,偏置資料,輸入資料,輸出資料,是否啟用 核大小 kw kw 輸入維度 輸出維度。輸入...
卷積層以及池化層的輸出維度
一 輸入的四個維度 2 height weight 的高和寬。3 channels 的通道數,黑白 就是1,rgb就是3。例如我們的輸入是x 333,28,28,3 則代表我們有333個寬和高都是28的黑白 單通道 二 卷積核的四個維度 1 height weight 卷積核矩陣的維度 2 inch...