习惯了pytorch或者tf框架提供的conv操作,你有没有考虑过后台是怎么实现的,有没有想自己手动实现一个卷积操作,下面就娓娓道来:
(1)基础版本
在C++中实现卷积操作可以使用基本的数组操作。以下是一个简单的2D卷积操作的实现示例:
#include <iostream>
#include <vector>
using namespace std;
// Function to perform 2D convolution
vector<vector<float>> convolution2D(const vector<vector<float>>& input,
const vector<vector<float>>& kernel) {
int kernelSize = kernel.size();
int kernelRadius = kernelSize / 2;
int inputRows = input.size();
int inputCols = input[0].size();
vector<vector<float>> output(inputRows, vector<float>(inputCols, 0));
// Perform convolution
for (int i = kernelRadius; i < inputRows - kernelRadius; ++i) {
for (int j = kernelRadius; j < inputCols - kernelRadius; ++j) {
float sum =