unfolded2d_acc_channels_last Class — pytorch Architecture
Architecture documentation for the unfolded2d_acc_channels_last class in Unfold2d.cpp from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/cpu/Unfold2d.cpp lines 115–168
template <typename scalar_t>
void unfolded2d_acc_channels_last(
scalar_t* finput_data,
scalar_t* input_data,
int64_t kH,
int64_t kW,
int64_t dH,
int64_t dW,
int64_t padH,
int64_t padW,
int64_t n_input_plane,
int64_t input_height,
int64_t input_width,
int64_t output_height,
int64_t output_width) {
for (int64_t y = 0; y < output_height; y++) {
for (int64_t x = 0; x < output_width; x++) {
scalar_t* src = finput_data + y * output_width * kH * kW * n_input_plane + x * kH * kW * n_input_plane;
scalar_t* dst = input_data;
if (padW > 0 || padH > 0) {
for (int64_t kh = 0; kh < kH; kh++) {
for (int64_t kw = 0; kw < kW; kw++) {
int64_t iy = y * dH - padH + kh;
int64_t ix = x * dW - padW + kw;
if (iy < 0 || iy >= input_height || ix < 0 || ix >= input_width) {
} else {
scalar_t* dst_slice = dst + iy * input_width * n_input_plane + ix * n_input_plane;
scalar_t* src_slice = src + kh * kW * n_input_plane + kw * n_input_plane;
cadd(dst_slice,
dst_slice,
src_slice,
n_input_plane);
}
}
}
} else {
for (int64_t kh = 0; kh < kH; kh++) {
for (int64_t kw = 0; kw < kW; kw++) {
int64_t iy = y * dH + kh;
int64_t ix = x * dW + kw;
scalar_t* dst_slice = dst + iy * input_width * n_input_plane + ix * n_input_plane;
scalar_t* src_slice = src + kh * kW * n_input_plane + kw * n_input_plane;
cadd(dst_slice,
dst_slice,
src_slice,
n_input_plane);
}
}
}
}
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free