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