122 lines
3.2 KiB
Python
122 lines
3.2 KiB
Python
|
#
|
||
|
# Copyright (C) 2018 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.
|
||
|
#
|
||
|
|
||
|
def test(input0, axis, indices, output0, input_data, output_data):
|
||
|
model = Model().Operation("GATHER", input0, axis, indices).To(output0)
|
||
|
|
||
|
quant8 = DataTypeConverter().Identify({
|
||
|
input0: ["TENSOR_QUANT8_ASYMM", 0.5, 127],
|
||
|
output0: ["TENSOR_QUANT8_ASYMM", 0.5, 127],
|
||
|
})
|
||
|
|
||
|
int32 = DataTypeConverter().Identify({
|
||
|
input0: ["TENSOR_INT32"],
|
||
|
output0: ["TENSOR_INT32"],
|
||
|
})
|
||
|
|
||
|
float16 = DataTypeConverter().Identify({
|
||
|
input0: ["TENSOR_FLOAT16"],
|
||
|
output0: ["TENSOR_FLOAT16"],
|
||
|
})
|
||
|
|
||
|
Example({
|
||
|
input0: input_data,
|
||
|
output0: output_data,
|
||
|
}, model=model).AddVariations("relaxed", quant8, int32, float16)
|
||
|
|
||
|
test(
|
||
|
input0=Input("input0", "TENSOR_FLOAT32", "{2, 2}"),
|
||
|
axis=0,
|
||
|
indices=[1, 0],
|
||
|
output0=Output("output0", "TENSOR_FLOAT32", "{2, 2}"),
|
||
|
input_data=[-2.0, 0.2,
|
||
|
0.7, 0.8],
|
||
|
output_data=[0.7, 0.8,
|
||
|
-2.0, 0.2],
|
||
|
)
|
||
|
|
||
|
test(
|
||
|
input0=Input("input0", "TENSOR_FLOAT32", "{2, 2}"),
|
||
|
axis=0,
|
||
|
indices=[1], # Unlike TensorFlow, 0-D arguments and outputs are not supported.
|
||
|
output0=Output("output0", "TENSOR_FLOAT32", "{1, 2}"),
|
||
|
input_data=[-2.0, 0.2,
|
||
|
0.7, 0.8],
|
||
|
output_data=[0.7, 0.8],
|
||
|
)
|
||
|
|
||
|
test(
|
||
|
input0=Input("input0", "TENSOR_FLOAT32", "{3}"),
|
||
|
axis=0,
|
||
|
indices=[1],
|
||
|
output0=Output("output0", "TENSOR_FLOAT32", "{1}"),
|
||
|
input_data=[1, 2, 3],
|
||
|
output_data=[2],
|
||
|
)
|
||
|
|
||
|
test(
|
||
|
input0=Input("input0", "TENSOR_FLOAT32", "{3}"),
|
||
|
axis=0,
|
||
|
indices=[1, 0],
|
||
|
output0=Output("output0", "TENSOR_FLOAT32", "{2}"),
|
||
|
input_data=[1, 2, 3],
|
||
|
output_data=[2, 1],
|
||
|
)
|
||
|
|
||
|
test(
|
||
|
input0=Input("input0", "TENSOR_FLOAT32", "{1, 2, 2}"),
|
||
|
axis=0,
|
||
|
indices=[0, 0],
|
||
|
output0=Output("output0", "TENSOR_FLOAT32", "{2, 2, 2}"),
|
||
|
input_data=[-2.0, 0.2,
|
||
|
0.7, 0.8],
|
||
|
output_data=[-2.0, 0.2,
|
||
|
0.7, 0.8,
|
||
|
-2.0, 0.2,
|
||
|
0.7, 0.8],
|
||
|
)
|
||
|
|
||
|
test(
|
||
|
input0=Input("input0", "TENSOR_FLOAT32", "{4, 1}"),
|
||
|
axis=0,
|
||
|
indices=[1, 3],
|
||
|
output0=Output("output0", "TENSOR_FLOAT32", "{2, 1}"),
|
||
|
input_data=[-2.0, 0.2, 0.7, 0.8],
|
||
|
output_data=[0.2, 0.8],
|
||
|
)
|
||
|
|
||
|
test(
|
||
|
input0=Input("input0", "TENSOR_FLOAT32", "{1, 2, 3}"),
|
||
|
axis=1,
|
||
|
indices=[1, 0],
|
||
|
output0=Output("output0", "TENSOR_FLOAT32", "{1, 2, 3}"),
|
||
|
input_data=[1, 2, 3,
|
||
|
4, 5, 6],
|
||
|
output_data=[4, 5, 6,
|
||
|
1, 2, 3],
|
||
|
)
|
||
|
|
||
|
test(
|
||
|
input0=Input("input0", "TENSOR_FLOAT32", "{1, 2, 3}"),
|
||
|
axis=-1,
|
||
|
indices=[2, 0],
|
||
|
output0=Output("output0", "TENSOR_FLOAT32", "{1, 2, 2}"),
|
||
|
input_data=[1, 2, 3,
|
||
|
4, 5, 6],
|
||
|
output_data=[3, 1,
|
||
|
6, 4],
|
||
|
)
|