Change the type of `strides` argument of `Conv2D` and `DepthwiseConv2D` operations to `vector<int32_t>`.
Signed-off-by: Sergei Barannikov <s.barannikov@samsung.com>
std::vector<mir::TensorVariant> nnc::DeConv2D::operator()()
{
- const auto &strides = _op.getStrides();
+ const Shape &strides = _op.getStrides();
Shape out_shape = _op.getOutputShape(0);
auto res = allocate_tensor(out_shape);
Tensor<float> res_accesor(res);
{
const int32_t channels = 3;
mir::Shape kernel_shape{1, 3, 3, channels}; // output Channels, Height, Width, input Channels
- mir::Shape strides{1, 1};
mir::TensorVariant kernel_tensor = createTensorVariant(kernel_shape);
Graph g;
OpConstructor op_generator =
- [kernel_tensor, strides](mir::Graph &g, const std::vector<mir::Operation::Output *> &inputs) {
- std::vector<int32_t> padding{0, 0};
+ [kernel_tensor](mir::Graph &g, const std::vector<mir::Operation::Output *> &inputs) {
+ vector<int32_t> strides{1, 1};
+ vector<int32_t> padding{0, 0};
auto kernel = g.create<mir::ops::ConstantOp>(kernel_tensor)->getOutput(0);
return g.create<mir::ops::Conv2DOp>(inputs[0], kernel, strides, padding, padding);
};
{
const int32_t channels = 3;
mir::Shape kernel_shape{3, 3, channels, 1}; // Height, Width, Channels, Channel multiplier
- mir::Shape strides{1, 1};
mir::TensorVariant kernel_tensor = createTensorVariant(kernel_shape);
Graph g;
OpConstructor op_generator =
- [kernel_tensor, strides](mir::Graph &g, const std::vector<mir::Operation::Output *> &inputs) {
- std::vector<int32_t> padding{0, 0};
+ [kernel_tensor](mir::Graph &g, const std::vector<mir::Operation::Output *> &inputs) {
+ vector<int32_t> strides{1, 1};
+ vector<int32_t> padding{0, 0};
auto kernel = g.create<mir::ops::ConstantOp>(kernel_tensor)->getOutput(0);
return g.create<mir::ops::DepthwiseConv2DOp>(inputs[0], kernel, strides, padding, padding);
};
// Create graph: 'input->conv->bias->scale->scale->bias'
auto input = g.create<ops::InputOp>(Shape{1, 299, 299, 3});
auto conv_const = g.create<ops::ConstantOp>(TensorVariant(DataType::FLOAT32, {10, 3, 3, 3}));
- std::vector<int32_t> padding{0, 0};
- auto conv = g.create<ops::Conv2DOp>(input->getOutput(0), conv_const->getOutput(0), Shape{1, 1},
+ const std::vector<std::int32_t> strides{1, 1};
+ const std::vector<std::int32_t> padding{0, 0};
+ auto conv = g.create<ops::Conv2DOp>(input->getOutput(0), conv_const->getOutput(0), strides,
padding, padding);
auto bias1_const = g.create<ops::ConstantOp>(TensorVariant(DataType::FLOAT32, {10}));
auto bias1 = g.create<ops::AddOp>(conv->getOutput(0), bias1_const->getOutput(0));
{
vector<int> input_shape_data{3, 9, 3, static_cast<int>(input_c)}; // NHWC
vector<int> kernel_shape_data{kernel_h, kernel_w, output_c, input_c};
- mir::Shape strides{stride_h, stride_w};
+ vector<int32_t> strides{stride_h, stride_w};
vector<unique_ptr<mir::TensorVariant>> input_ntensors(2);
Tensor input_atensor0;
Tensor input_atensor1;
{
vector<int> input_shape_data{3, 5, 7, static_cast<int>(input_c)}; // NHWC
vector<int> kernel_shape_data{output_c, kernel_h, kernel_w, input_c}; // OHWI
- mir::Shape strides{stride_h, stride_w};
+ vector<int32_t> strides{stride_h, stride_w};
vector<unique_ptr<mir::TensorVariant>> input_ntensors(2);
Tensor input_atensor0;
Tensor input_atensor1;
{
vector<int> input_shape_data{3, 7, 6, static_cast<int>(channels)}; // NHWC
vector<int> kernel_shape_data{kernel_h, kernel_w, channels, multiplier}; // HWCN
- mir::Shape strides{stride_h, stride_w};
+ vector<int32_t> strides{stride_h, stride_w};
vector<unique_ptr<mir::TensorVariant>> input_ntensors(2);
Tensor input_atensor0;
Tensor input_atensor1;