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++) {
|
||||
// 将输入图像的对应像素与卷积核权重相乘,并累加到conv_temp
|
||||
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){
|
||||
// float sum=0;
|
||||
@@ -70,26 +98,6 @@ float* convolution(Model model_w, Model model_b, const float* input_matrix, int
|
||||
// }
|
||||
// _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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user