Skip to content

Commit e9e2d31

Browse files
committed
fix depthwise
1 parent 6a2b0b1 commit e9e2d31

File tree

5 files changed

+12
-49
lines changed

5 files changed

+12
-49
lines changed

app/Graph/build.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ void build_graph_linear(it_lab_ai::Graph& graph, it_lab_ai::Tensor& input,
8282
it_lab_ai::Tensor tmp_values = tensor;
8383
it_lab_ai::Tensor tmp_bias = it_lab_ai::make_tensor(tensor.get_bias());
8484
auto conv_layer = it_lab_ai::LayerFactory::createConvLayer(
85-
1, pads, 1, tmp_values, tmp_bias, 1, options,true);
85+
options, 1, pads, 1, tmp_values, tmp_bias, 1, true);
8686
layer_ptrs.push_back(conv_layer.get());
8787
layers.push_back(std::move(conv_layer));
8888
layerpostop.push_back(false);
@@ -411,7 +411,7 @@ ParseResult parse_json_model(RuntimeOptions options,
411411
it_lab_ai::Tensor tmp_bias = it_lab_ai::make_tensor(tensor.get_bias());
412412

413413
auto conv_layer = it_lab_ai::LayerFactory::createConvLayer(
414-
stride, pads, dilations, tmp_tensor, tmp_bias, group, options);
414+
options, stride, pads, dilations, tmp_tensor, tmp_bias, group);
415415
layer = std::move(conv_layer);
416416
} else if (layer_type.find("Relu") != std::string::npos ||
417417
layer_type.find("relu") != std::string::npos) {

app/Graph/build.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ class LayerFactory {
8888
}
8989

9090
static std::unique_ptr<Layer> createConvLayer(
91-
size_t step, size_t pads, size_t dilations, const Tensor& kernel,
92-
const Tensor& bias = Tensor(), size_t group = 1,
93-
const RuntimeOptions& options, bool useLegacyImpl = false) {
91+
const RuntimeOptions& options, size_t step, size_t pads, size_t dilations,
92+
const Tensor& kernel, const Tensor& bias = Tensor(), size_t group = 1,
93+
bool useLegacyImpl = false) {
9494
if (options.backend == Backend::kOneDnn) {
9595
return std::make_unique<ConvLayerOneDnn>(step, pads, dilations, kernel,
9696
bias, group, useLegacyImpl);

include/layers_oneDNN/ConvLayer.hpp

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,19 @@ namespace it_lab_ai {
1212
class ConvLayerOneDnn : public Layer {
1313
public:
1414
ConvLayerOneDnn()
15-
: Layer(kConvolution),
16-
stride_(1),
17-
pads_(0),
18-
dilations_(1),
19-
group_(1),
20-
depthwise_(false) {}
15+
: Layer(kConvolution), stride_(1), pads_(0), dilations_(1), group_(1) {}
2116

2217
ConvLayerOneDnn(size_t stride, size_t pads, size_t dilations,
2318
const Tensor& kernel, const Tensor& bias = Tensor(),
24-
size_t group = 1, bool use_legacy = false,
25-
bool depthwise = false)
19+
size_t group = 1, bool use_legacy = false)
2620
: Layer(kConvolution),
2721
stride_(stride),
2822
pads_(pads),
2923
dilations_(dilations),
3024
kernel_(kernel),
3125
bias_(bias),
3226
group_(group),
33-
use_legacy_(use_legacy),
34-
depthwise_(depthwise) {}
27+
use_legacy_(use_legacy) {}
3528

3629
void run(const std::vector<Tensor>& input,
3730
std::vector<Tensor>& output) override;
@@ -89,7 +82,6 @@ class ConvLayerOneDnn : public Layer {
8982
Tensor bias_;
9083
size_t group_;
9184
bool use_legacy_;
92-
bool depthwise_;
9385

9486
std::unique_ptr<dnnl::engine> engine_;
9587
std::unique_ptr<dnnl::stream> stream_;

src/layers_oneDNN/ConvLayer.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,8 @@ void ConvLayerOneDnn::validate_depthwise_input(
160160
}
161161

162162
bool ConvLayerOneDnn::is_depthwise_convolution() const {
163-
if (depthwise_) {
164-
return true;
165-
}
166-
167163
const Shape& kernel_shape = kernel_.get_shape();
168-
return (group_ > 1 && kernel_shape[1] == 1);
164+
return (group_ == kernel_shape[0]);
169165
}
170166

171167
void ConvLayerOneDnn::initialize_convolution(const Shape& input_shape,

test/single_layer/test_convlayer_onednn.cpp

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ TEST(convlayer_onednn, depthwise_convolution) {
131131
Tensor input = make_tensor(input_data, Shape({1, 3, 5, 5}));
132132
Tensor kernel = make_tensor(kernel_data, Shape({3, 1, 3, 3}));
133133

134-
ConvLayerOneDnn layer(1, 0, 1, kernel, Tensor(), 3, false, true);
134+
ConvLayerOneDnn layer(1, 0, 1, kernel, Tensor(), 3, false);
135135

136136
Tensor output;
137137
std::vector<Tensor> in{input};
@@ -395,7 +395,7 @@ TEST(convlayer_onednn, depthwise_kernel_shape_validation) {
395395
std::vector<float> kernel_data(3 * 2 * 3 * 3, 1.0f);
396396
Tensor kernel = make_tensor(kernel_data, Shape({3, 2, 3, 3}));
397397

398-
ConvLayerOneDnn layer(1, 0, 1, kernel, Tensor(), 3, false, true);
398+
ConvLayerOneDnn layer(1, 0, 1, kernel, Tensor(), 3, false);
399399

400400
std::vector<float> input_data(1 * 3 * 5 * 5, 1.0f);
401401
Tensor input = make_tensor(input_data, Shape({1, 3, 5, 5}));
@@ -406,31 +406,6 @@ TEST(convlayer_onednn, depthwise_kernel_shape_validation) {
406406
EXPECT_THROW(layer.run(in, out), std::runtime_error);
407407
}
408408

409-
TEST(convlayer_onednn, unsupported_data_type_validation) {
410-
std::vector<float> kernel_data(3 * 3, 1.0f);
411-
Tensor kernel = make_tensor(kernel_data, Shape({1, 1, 3, 3}));
412-
ConvLayerOneDnn layer(1, 0, 1, kernel);
413-
414-
std::vector<float> input_data(16, 1.0f);
415-
Tensor input = make_tensor(input_data, Shape({1, 1, 4, 4}));
416-
Tensor output;
417-
std::vector<Tensor> in{input};
418-
std::vector<Tensor> out{output};
419-
420-
EXPECT_NO_THROW(layer.run(in, out));
421-
std::vector<int> kernel_data_int(3 * 3, 1);
422-
Tensor kernel_int = make_tensor(kernel_data_int, Shape({1, 1, 3, 3}));
423-
ConvLayerOneDnn layer_int(1, 0, 1, kernel_int);
424-
425-
std::vector<int> input_data_int(16, 1);
426-
Tensor input_int = make_tensor(input_data_int, Shape({1, 1, 4, 4}));
427-
Tensor output_int;
428-
std::vector<Tensor> in_int{input_int};
429-
std::vector<Tensor> out_int{output_int};
430-
431-
EXPECT_NO_THROW(layer_int.run(in_int, out_int));
432-
}
433-
434409
TEST(convlayer_onednn, bias_memory_handling) {
435410
{
436411
std::vector<float> kernel_data(2 * 3 * 3 * 3, 1.0f);
@@ -474,7 +449,7 @@ TEST(convlayer_onednn, bias_memory_handling) {
474449
Tensor kernel = make_tensor(kernel_data, Shape({3, 1, 3, 3}));
475450
Tensor bias = make_tensor(bias_data, Shape({3}));
476451

477-
ConvLayerOneDnn layer(1, 0, 1, kernel, bias, 3, false, true);
452+
ConvLayerOneDnn layer(1, 0, 1, kernel, bias, 3, false);
478453

479454
std::vector<float> input_data(1 * 3 * 5 * 5, 1.0f);
480455
Tensor input = make_tensor(input_data, Shape({1, 3, 5, 5}));

0 commit comments

Comments
 (0)