1#
2# Copyright (C) 2017 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17# model
18model = Model()
19
20bat = 5
21row = 50
22col = 70
23chn = 3
24
25i0 = Input("i0", "TENSOR_QUANT8_ASYMM", "{%d, %d, %d, %d}, 0.5f, 0" % (bat, row, col, chn))
26
27std = 20
28flt = 20
29pad = 0
30
31stride = Int32Scalar("stride", std)
32filt = Int32Scalar("filter", flt)
33padding = Int32Scalar("padding", pad)
34act2 = Int32Scalar("relu1_activation", 2)
35output_row = (row + 2 * pad - flt + std) // std
36output_col = (col + 2 * pad - flt + std) // std
37
38output = Output("output", "TENSOR_QUANT8_ASYMM",
39                "{%d, %d, %d, %d}, 0.5f, 0" % (bat, output_row, output_col, chn))
40
41model = model.Operation(
42    "MAX_POOL_2D", i0, padding, padding, padding, padding, stride, stride, filt, filt, act2).To(output)
43
44# Example 1. Input in operand 0
45input_range = bat * row * col * chn
46input_values = (lambda s = std, r = input_range: [x % s + 1 for x in range(r)])()
47input0 = {i0: input_values}
48output_range = bat * output_row * output_col * chn
49output_values = (lambda r = output_range: [ 2 for _ in range(r)])()
50output0 = {output: output_values}
51
52# Instantiate an example
53Example((input0, output0))
54