1b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang#
2b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# Copyright (C) 2018 The Android Open Source Project
3b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang#
4b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# Licensed under the Apache License, Version 2.0 (the "License");
5b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# you may not use this file except in compliance with the License.
6b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# You may obtain a copy of the License at
7b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang#
8b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang#      http://www.apache.org/licenses/LICENSE-2.0
9b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang#
10b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# Unless required by applicable law or agreed to in writing, software
11b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# distributed under the License is distributed on an "AS IS" BASIS,
12b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# See the License for the specific language governing permissions and
14b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# limitations under the License.
15b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang#
16b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
17b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# model
18b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangmodel = Model()
19b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
20b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangbat = 1
21b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangrow = 200
22b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangcol = 180
23b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangchn = 1
24b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
25b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangi0 = Input("i0", "TENSOR_FLOAT32", "{%d, %d, %d, %d}" % (bat, row, col, chn))
26b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
27b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangstd = 2
28b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangflt = 10
29b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangpad = 0
30b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
31b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangstride = Int32Scalar("stride", std)
32b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangfilt = Int32Scalar("filter", flt)
33b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangpadding = Int32Scalar("padding", pad)
34b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangact0 = Int32Scalar("activation", 0)
35b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangoutput_row = (row + 2 * pad - flt + std) // std
36b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangoutput_col = (col + 2 * pad - flt + std) // std
37b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
38b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangoutput = Output("output", "TENSOR_FLOAT32",
39b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang                "{%d, %d, %d, %d}" % (bat, output_row, output_col, chn))
40b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
41b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangmodel = model.Operation(
42b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang    "AVERAGE_POOL_2D", i0, padding, padding, padding, padding, stride, stride, filt, filt, act0).To(output)
43b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangmodel = model.RelaxedExecution(True)
44b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
45b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# Example 1. Input in operand 0,
46b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wanginput_values = [x % 2 for x in range(bat * row * col * chn)]
47b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wanginput0 = {i0: input_values}
48b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangoutput_values = [.5 for _ in range(bat * output_row * output_col * chn)]
49b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangoutput0 = {output: output_values}
50b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang
51b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# Instantiate an example
52b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao WangExample((input0, output0))
53