169299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen#
269299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# Copyright (C) 2017 The Android Open Source Project
369299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen#
469299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# Licensed under the Apache License, Version 2.0 (the "License");
569299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# you may not use this file except in compliance with the License.
669299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# You may obtain a copy of the License at
769299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen#
869299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen#      http://www.apache.org/licenses/LICENSE-2.0
969299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen#
1069299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# Unless required by applicable law or agreed to in writing, software
1169299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# distributed under the License is distributed on an "AS IS" BASIS,
1269299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1369299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# See the License for the specific language governing permissions and
1469299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# limitations under the License.
1569299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen#
1669299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
1769299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# model
1869299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenmodel = Model()
1969299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
2069299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenbat = 5
21e68d924a02511200be6186c947359dee7bb58f23Jean-Luc Brouilletrow = 50
22e68d924a02511200be6186c947359dee7bb58f23Jean-Luc Brouilletcol = 70
2369299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenchn = 3
2469299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
2569299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Cheni0 = Input("i0", "TENSOR_FLOAT32", "{%d, %d, %d, %d}" % (bat, row, col, chn))
2669299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
2769299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenstd = 20
2869299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenflt = 20
2969299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenpad = 0
3069299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
3169299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenstride = Int32Scalar("stride", std)
3269299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenfilt = Int32Scalar("filter", flt)
3369299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenpadding = Int32Scalar("padding", pad)
3469299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenact0 = Int32Scalar("activation", 0)
3569299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenoutput_row = (row + 2 * pad - flt + std) // std
3669299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenoutput_col = (col + 2 * pad - flt + std) // std
3769299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
3869299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenoutput = Output("output", "TENSOR_FLOAT32",
3969299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen                "{%d, %d, %d, %d}" % (bat, output_row, output_col, chn))
4069299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
4169299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenmodel = model.Operation(
4269299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen    "MAX_POOL_2D", i0, padding, padding, padding, padding, stride, stride, filt, filt, act0).To(output)
4369299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
4469299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# Example 1. Input in operand 0
4569299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Cheninput_range = bat * row * col * chn
4669299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Cheninput_values = (lambda s = std, r = input_range: [x % s + 1 for x in range(r)])()
4769299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Cheninput0 = {i0: input_values}
4869299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenoutput_range = bat * output_row * output_col * chn
4969299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenoutput_values = (lambda s = std, r = output_range: [ s for _ in range(r)])()
5069299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chenoutput0 = {output: output_values}
5169299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen
5269299fdfda233fa23135c1b9dcaf9b9f2efed684Dong Chen# Instantiate an example
5369299fdfda233fa23135c1b9dcaf9b9f2efed684Dong ChenExample((input0, output0))
54