20 template <
size_t S1,
size_t S2,
size_t P1,
size_t P2>
28 template <
typename I,
typename K,
typename C>
29 static void apply(
const I& input,
const K& kernel, C&& conv) {
30 if constexpr (is_3d<I>) {
31 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
32 conv(i) = conv_2d_valid<S1, S2, P1, P2>(input(i), kernel(i));
35 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
36 apply(input(i), kernel(i), conv(i));
45 template <
size_t S1,
size_t S2,
size_t P1,
size_t P2>
53 template <
typename I,
typename K,
typename C>
54 static void apply(
const I& input,
const K& kernel, C&& conv) {
55 if constexpr (is_3d<I>) {
56 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
57 conv(i) = conv_2d_valid_flipped<S1, S2, P1, P2>(input(i), kernel(i));
60 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
61 apply(input(i), kernel(i), conv(i));
77 template <
typename I,
typename K,
typename C>
78 static void apply(
const I& input,
const K& kernel, C&& conv) {
79 if constexpr (is_3d<I>) {
80 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
84 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
85 apply(input(i), kernel(i), conv(i));
101 template <
typename I,
typename K,
typename C>
102 static void apply(
const I& input,
const K& kernel, C&& conv) {
103 if constexpr (is_3d<I>) {
104 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
108 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
109 apply(input(i), kernel(i), conv(i));
125 template <
typename I,
typename K,
typename C>
126 static void apply(
const I& input,
const K& kernel, C&& conv) {
127 if constexpr (is_3d<I>) {
128 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
132 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
133 apply(input(i), kernel(i), conv(i));
149 template <
typename I,
typename K,
typename C>
150 static void apply(
const I& input,
const K& kernel, C&& conv) {
151 if constexpr (is_3d<I>) {
152 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
156 for (
size_t i = 0; i < etl::dim<0>(input); ++i) {
157 apply(input(i), kernel(i), conv(i));
The functor impl for 2D+ conv.
Definition: conv_deep.hpp:21
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_deep.hpp:102
The functor impl for 2D+ conv.
Definition: conv_deep.hpp:46
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_deep.hpp:54
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_deep.hpp:78
Definition: expression_builder.hpp:699
conv_2d_full_expr< detail::build_type< A >, detail::build_type< B >, true > conv_2d_full_flipped(A &&a, B &&b)
Creates an expression representing the 'full' 1D convolution of a and flipped b.
Definition: conv_2d_full_expr.hpp:273
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_deep.hpp:150
The functor impl for 2D+ conv.
Definition: conv_deep.hpp:94
The functor impl for 2D+ conv.
Definition: conv_deep.hpp:142
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_deep.hpp:126
The functor impl for 2D+ conv.
Definition: conv_deep.hpp:118
The functor impl for 2D+ conv.
Definition: conv_deep.hpp:70
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_deep.hpp:29
conv_2d_full_expr< detail::build_type< A >, detail::build_type< B >, false > conv_2d_full(A &&a, B &&b)
Creates an expression representing the 'full' 1D convolution of a and b.
Definition: conv_2d_full_expr.hpp:238
conv_2d_same_expr< detail::build_type< A >, detail::build_type< B >, false > conv_2d_same(A &&a, B &&b)
Creates an expression representing the 'same' 1D convolution of a and b.
Definition: conv_2d_same_expr.hpp:238
conv_2d_same_expr< detail::build_type< A >, detail::build_type< B >, true > conv_2d_same_flipped(A &&a, B &&b)
Creates an expression representing the 'same' 1D convolution of a and flipped b.
Definition: conv_2d_same_expr.hpp:273