Merge "Move strided_slice_invalid_output_dims to spec directory."
This commit is contained in:
commit
0d0af2cbe3
4 changed files with 0 additions and 390 deletions
|
@ -44,21 +44,6 @@ std::vector<Request> createRequests(const std::vector<MixedTypedExample>& exampl
|
|||
// in frameworks/ml/nn/runtime/tests/generated/
|
||||
#include "vts/V1_2/all_generated_V1_2_vts_tests.cpp"
|
||||
|
||||
// Generated from spec/strided_slice_invalid_output_dims.mod.py.
|
||||
// TODO(b/132155416): Make this part of all_generated_V1_2_vts_tests.cpp.
|
||||
namespace strided_slice_invalid_output_dims {
|
||||
#include "generated/strided_slice_invalid_output_dims.example.cpp"
|
||||
#include "generated/strided_slice_invalid_output_dims.model.cpp"
|
||||
} // namespace strided_slice_invalid_output_dims
|
||||
|
||||
// TODO(b/132155416): Make this part of all_generated_V1_2_vts_tests.cpp.
|
||||
TEST_F(ValidationTest, strided_slice_invalid_output_dims) {
|
||||
const Model model = strided_slice_invalid_output_dims::createTestModel();
|
||||
const std::vector<Request> requests =
|
||||
createRequests(strided_slice_invalid_output_dims::get_examples());
|
||||
validateFailure(model, requests);
|
||||
}
|
||||
|
||||
} // namespace functional
|
||||
} // namespace vts
|
||||
} // namespace V1_2
|
||||
|
|
|
@ -1,116 +0,0 @@
|
|||
// clang-format off
|
||||
// Generated file (from: strided_slice_invalid_output_dims.mod.py). Do not edit
|
||||
std::vector<MixedTypedExample>& get_examples() {
|
||||
static std::vector<MixedTypedExample> examples = {
|
||||
// Begin of an example
|
||||
{
|
||||
.operands = {
|
||||
//Input(s)
|
||||
{ // See tools/test_generator/include/TestHarness.h:MixedTyped
|
||||
// int -> Dimensions map
|
||||
.operandDimensions = {{0, {2, 3}}},
|
||||
// int -> FLOAT32 map
|
||||
.float32Operands = {{0, {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f}}},
|
||||
// int -> INT32 map
|
||||
.int32Operands = {},
|
||||
// int -> QUANT8_ASYMM map
|
||||
.quant8AsymmOperands = {},
|
||||
// int -> QUANT16_SYMM map
|
||||
.quant16SymmOperands = {},
|
||||
// int -> FLOAT16 map
|
||||
.float16Operands = {},
|
||||
// int -> BOOL8 map
|
||||
.bool8Operands = {},
|
||||
// int -> QUANT8_SYMM_PER_CHANNEL map
|
||||
.quant8ChannelOperands = {},
|
||||
// int -> QUANT16_ASYMM map
|
||||
.quant16AsymmOperands = {},
|
||||
// int -> QUANT8_SYMM map
|
||||
.quant8SymmOperands = {},
|
||||
},
|
||||
//Output(s)
|
||||
{ // See tools/test_generator/include/TestHarness.h:MixedTyped
|
||||
// int -> Dimensions map
|
||||
.operandDimensions = {{0, {3}}},
|
||||
// int -> FLOAT32 map
|
||||
.float32Operands = {{0, {1.0f, 2.0f, 3.0f}}},
|
||||
// int -> INT32 map
|
||||
.int32Operands = {},
|
||||
// int -> QUANT8_ASYMM map
|
||||
.quant8AsymmOperands = {},
|
||||
// int -> QUANT16_SYMM map
|
||||
.quant16SymmOperands = {},
|
||||
// int -> FLOAT16 map
|
||||
.float16Operands = {},
|
||||
// int -> BOOL8 map
|
||||
.bool8Operands = {},
|
||||
// int -> QUANT8_SYMM_PER_CHANNEL map
|
||||
.quant8ChannelOperands = {},
|
||||
// int -> QUANT16_ASYMM map
|
||||
.quant16AsymmOperands = {},
|
||||
// int -> QUANT8_SYMM map
|
||||
.quant8SymmOperands = {},
|
||||
}
|
||||
},
|
||||
}, // End of an example
|
||||
};
|
||||
return examples;
|
||||
};
|
||||
|
||||
std::vector<MixedTypedExample>& get_examples_dynamic_output_shape() {
|
||||
static std::vector<MixedTypedExample> examples_dynamic_output_shape = {
|
||||
// Begin of an example
|
||||
{
|
||||
.operands = {
|
||||
//Input(s)
|
||||
{ // See tools/test_generator/include/TestHarness.h:MixedTyped
|
||||
// int -> Dimensions map
|
||||
.operandDimensions = {{0, {2, 3}}},
|
||||
// int -> FLOAT32 map
|
||||
.float32Operands = {{0, {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f}}},
|
||||
// int -> INT32 map
|
||||
.int32Operands = {},
|
||||
// int -> QUANT8_ASYMM map
|
||||
.quant8AsymmOperands = {},
|
||||
// int -> QUANT16_SYMM map
|
||||
.quant16SymmOperands = {},
|
||||
// int -> FLOAT16 map
|
||||
.float16Operands = {},
|
||||
// int -> BOOL8 map
|
||||
.bool8Operands = {},
|
||||
// int -> QUANT8_SYMM_PER_CHANNEL map
|
||||
.quant8ChannelOperands = {},
|
||||
// int -> QUANT16_ASYMM map
|
||||
.quant16AsymmOperands = {},
|
||||
// int -> QUANT8_SYMM map
|
||||
.quant8SymmOperands = {},
|
||||
},
|
||||
//Output(s)
|
||||
{ // See tools/test_generator/include/TestHarness.h:MixedTyped
|
||||
// int -> Dimensions map
|
||||
.operandDimensions = {{0, {3}}},
|
||||
// int -> FLOAT32 map
|
||||
.float32Operands = {{0, {1.0f, 2.0f, 3.0f}}},
|
||||
// int -> INT32 map
|
||||
.int32Operands = {},
|
||||
// int -> QUANT8_ASYMM map
|
||||
.quant8AsymmOperands = {},
|
||||
// int -> QUANT16_SYMM map
|
||||
.quant16SymmOperands = {},
|
||||
// int -> FLOAT16 map
|
||||
.float16Operands = {},
|
||||
// int -> BOOL8 map
|
||||
.bool8Operands = {},
|
||||
// int -> QUANT8_SYMM_PER_CHANNEL map
|
||||
.quant8ChannelOperands = {},
|
||||
// int -> QUANT16_ASYMM map
|
||||
.quant16AsymmOperands = {},
|
||||
// int -> QUANT8_SYMM map
|
||||
.quant8SymmOperands = {},
|
||||
}
|
||||
},
|
||||
}, // End of an example
|
||||
};
|
||||
return examples_dynamic_output_shape;
|
||||
};
|
||||
|
|
@ -1,216 +0,0 @@
|
|||
// clang-format off
|
||||
// Generated file (from: strided_slice_invalid_output_dims.mod.py). Do not edit
|
||||
// Create the model
|
||||
Model createTestModel() {
|
||||
const std::vector<Operand> operands = {
|
||||
{
|
||||
.type = OperandType::TENSOR_FLOAT32,
|
||||
.dimensions = {2, 3},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::MODEL_INPUT,
|
||||
.location = {.poolIndex = 0, .offset = 0, .length = 0},
|
||||
},
|
||||
{
|
||||
.type = OperandType::TENSOR_INT32,
|
||||
.dimensions = {2},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 0, .length = 8},
|
||||
},
|
||||
{
|
||||
.type = OperandType::TENSOR_INT32,
|
||||
.dimensions = {2},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 8, .length = 8},
|
||||
},
|
||||
{
|
||||
.type = OperandType::TENSOR_INT32,
|
||||
.dimensions = {2},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 16, .length = 8},
|
||||
},
|
||||
{
|
||||
.type = OperandType::INT32,
|
||||
.dimensions = {},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 24, .length = 4},
|
||||
},
|
||||
{
|
||||
.type = OperandType::INT32,
|
||||
.dimensions = {},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 28, .length = 4},
|
||||
},
|
||||
{
|
||||
.type = OperandType::INT32,
|
||||
.dimensions = {},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 32, .length = 4},
|
||||
},
|
||||
{
|
||||
.type = OperandType::TENSOR_FLOAT32,
|
||||
.dimensions = {3},
|
||||
.numberOfConsumers = 0,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::MODEL_OUTPUT,
|
||||
.location = {.poolIndex = 0, .offset = 0, .length = 0},
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<Operation> operations = {
|
||||
{
|
||||
.type = OperationType::STRIDED_SLICE,
|
||||
.inputs = {0, 1, 2, 3, 4, 5, 6},
|
||||
.outputs = {7},
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<uint32_t> inputIndexes = {0};
|
||||
const std::vector<uint32_t> outputIndexes = {7};
|
||||
std::vector<uint8_t> operandValues = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
|
||||
};
|
||||
const std::vector<hidl_memory> pools = {};
|
||||
|
||||
return {
|
||||
.operands = operands,
|
||||
.operations = operations,
|
||||
.inputIndexes = inputIndexes,
|
||||
.outputIndexes = outputIndexes,
|
||||
.operandValues = operandValues,
|
||||
.pools = pools,
|
||||
};
|
||||
}
|
||||
|
||||
inline bool is_ignored(int i) {
|
||||
static std::set<int> ignore = {};
|
||||
return ignore.find(i) != ignore.end();
|
||||
}
|
||||
|
||||
// Create the model
|
||||
Model createTestModel_dynamic_output_shape() {
|
||||
const std::vector<Operand> operands = {
|
||||
{
|
||||
.type = OperandType::TENSOR_FLOAT32,
|
||||
.dimensions = {2, 3},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::MODEL_INPUT,
|
||||
.location = {.poolIndex = 0, .offset = 0, .length = 0},
|
||||
},
|
||||
{
|
||||
.type = OperandType::TENSOR_INT32,
|
||||
.dimensions = {2},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 0, .length = 8},
|
||||
},
|
||||
{
|
||||
.type = OperandType::TENSOR_INT32,
|
||||
.dimensions = {2},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 8, .length = 8},
|
||||
},
|
||||
{
|
||||
.type = OperandType::TENSOR_INT32,
|
||||
.dimensions = {2},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 16, .length = 8},
|
||||
},
|
||||
{
|
||||
.type = OperandType::INT32,
|
||||
.dimensions = {},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 24, .length = 4},
|
||||
},
|
||||
{
|
||||
.type = OperandType::INT32,
|
||||
.dimensions = {},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 28, .length = 4},
|
||||
},
|
||||
{
|
||||
.type = OperandType::INT32,
|
||||
.dimensions = {},
|
||||
.numberOfConsumers = 1,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::CONSTANT_COPY,
|
||||
.location = {.poolIndex = 0, .offset = 32, .length = 4},
|
||||
},
|
||||
{
|
||||
.type = OperandType::TENSOR_FLOAT32,
|
||||
.dimensions = {0},
|
||||
.numberOfConsumers = 0,
|
||||
.scale = 0.0f,
|
||||
.zeroPoint = 0,
|
||||
.lifetime = OperandLifeTime::MODEL_OUTPUT,
|
||||
.location = {.poolIndex = 0, .offset = 0, .length = 0},
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<Operation> operations = {
|
||||
{
|
||||
.type = OperationType::STRIDED_SLICE,
|
||||
.inputs = {0, 1, 2, 3, 4, 5, 6},
|
||||
.outputs = {7},
|
||||
}
|
||||
};
|
||||
|
||||
const std::vector<uint32_t> inputIndexes = {0};
|
||||
const std::vector<uint32_t> outputIndexes = {7};
|
||||
std::vector<uint8_t> operandValues = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
|
||||
};
|
||||
const std::vector<hidl_memory> pools = {};
|
||||
|
||||
return {
|
||||
.operands = operands,
|
||||
.operations = operations,
|
||||
.inputIndexes = inputIndexes,
|
||||
.outputIndexes = outputIndexes,
|
||||
.operandValues = operandValues,
|
||||
.pools = pools,
|
||||
};
|
||||
}
|
||||
|
||||
inline bool is_ignored_dynamic_output_shape(int i) {
|
||||
static std::set<int> ignore = {};
|
||||
return ignore.find(i) != ignore.end();
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2019 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# This test makes sure that executing STRIDED_SLICE results in a failure when
|
||||
# the output dimensions do not match shrinkAxisMask.
|
||||
#
|
||||
# The test generator does not support generating tests resulting in execution
|
||||
# failure, so the gTest part of this test has been written by hand.
|
||||
# TODO(b/132155416): Move this under frameworks/ml/nn/runtime/test/specs/V1_2.
|
||||
#
|
||||
# Based on strided_slice_float_11.mod.py.
|
||||
|
||||
model = Model()
|
||||
i1 = Input("input", "TENSOR_FLOAT32", "{2, 3}")
|
||||
begins = Parameter("begins", "TENSOR_INT32", "{2}", [0, 0])
|
||||
# The value "2" below makes the test invalid. See http://b/79856511#comment2.
|
||||
ends = Parameter("ends", "TENSOR_INT32", "{2}", [2, 3])
|
||||
strides = Parameter("strides", "TENSOR_INT32", "{2}", [1, 1])
|
||||
beginMask = Int32Scalar("beginMask", 0)
|
||||
endMask = Int32Scalar("endMask", 0)
|
||||
shrinkAxisMask = Int32Scalar("shrinkAxisMask", 1)
|
||||
|
||||
output = Output("output", "TENSOR_FLOAT32", "{3}")
|
||||
|
||||
model = model.Operation("STRIDED_SLICE", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
|
||||
|
||||
Example({
|
||||
i1: [1, 2, 3, 4, 5, 6],
|
||||
output: [1, 2, 3],
|
||||
})
|
Loading…
Reference in a new issue