tmp
This commit is contained in:
50
cnn.c
50
cnn.c
@@ -49,9 +49,37 @@ float* convolution(Model model_w, Model model_b, const float* input_matrix, int
|
|||||||
for (int y = 0; y < 3; y++) {
|
for (int y = 0; y < 3; y++) {
|
||||||
// 将输入图像的对应像素与卷积核权重相乘,并累加到conv_temp
|
// 将输入图像的对应像素与卷积核权重相乘,并累加到conv_temp
|
||||||
conv_temp += input_matrix[(c*im_l*im_l) + (row*(im_l)+col) + (x*(im_l)+y)]
|
conv_temp += input_matrix[(c*im_l*im_l) + (row*(im_l)+col) + (x*(im_l)+y)]
|
||||||
* model_w.array[() + (x*3+y) + (k*3*3)];
|
* model_w.array[((c+k*model_w.channel)*3*3) + (x*3+y)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_conv_rlst[(c*model_w.num_kernels*cr_l*cr_l) + (k*cr_l*cr_l) + (row*cr_l+col)] = conv_temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//合并子图
|
||||||
|
{
|
||||||
|
for(int k=0; k < model_w.num_kernels; k++) {
|
||||||
|
for (int row = 0; row < cr_l; row++) {
|
||||||
|
for (int col = 0; col < cr_l; col++) {
|
||||||
|
for (int c = 0; c < model_w.channel; c++) {
|
||||||
|
conv_temp += _conv_rlst[(c * model_w.num_kernels * cr_l * cr_l) + (k * cr_l * cr_l) + (row * cr_l + col)];
|
||||||
|
}
|
||||||
|
conv_rlst[(k * cr_l * cr_l) + (row * cr_l + col)] = conv_temp;
|
||||||
|
// 加上对应卷积核的偏置
|
||||||
|
conv_temp += model_b.array[k];
|
||||||
|
// 激活函数:ReLU(将小于0的值设为0)
|
||||||
|
if (conv_temp > 0)
|
||||||
|
conv_rlst[(k * (cr_l * cr_l)) + (row * cr_l) + (col)] = conv_temp; // 如果卷积结果大于0,存入结果数组
|
||||||
|
else
|
||||||
|
conv_rlst[(k * (cr_l * cr_l)) + (row * cr_l) + (col)] = 0; // 否则存入0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// if(model_w.channel>1){
|
// if(model_w.channel>1){
|
||||||
// float sum=0;
|
// float sum=0;
|
||||||
@@ -70,26 +98,6 @@ float* convolution(Model model_w, Model model_b, const float* input_matrix, int
|
|||||||
// }
|
// }
|
||||||
// _debug++;
|
// _debug++;
|
||||||
|
|
||||||
// 加上对应卷积核的偏置
|
|
||||||
conv_temp += model_b.array[k];
|
|
||||||
// 激活函数:ReLU(将小于0的值设为0)
|
|
||||||
if (conv_temp > 0)
|
|
||||||
conv_rlst[(k * (cr_l * cr_l)) + (row * cr_l) + (col)] = conv_temp; // 如果卷积结果大于0,存入结果数组
|
|
||||||
else
|
|
||||||
conv_rlst[(k * (cr_l * cr_l)) + (row * cr_l) + (col)] = 0; // 否则存入0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return conv_rlst;
|
return conv_rlst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user