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 Wanglookups = 4 18b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangkeys = 3 19b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangrows = 3 20b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangfeatures = 2 21b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 22b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangtable = [x for x in range(rows * features)] 23b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangfor i in range(rows): 24b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang for j in range(features): 25b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang table[i * features + j] = i + j / 10. 26b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 27b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangmodel = Model() 28b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 29b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wanglookup = Input("lookup", "TENSOR_INT32", "{%d}" % lookups) 30b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangkey = Input("key", "TENSOR_INT32", "{%d}" % (keys)) 31b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangvalue = Input("value", "TENSOR_FLOAT32", "{%d, %d}" % (rows, features)) 32b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangoutput = Output("output", "TENSOR_FLOAT32", "{%d, %d}" % (lookups, features)) 33b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wanghits = Output("hits", "TENSOR_QUANT8_ASYMM", "{%d}, 1.f, 0" % (lookups)) 34b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangmodel = model.Operation("HASHTABLE_LOOKUP", lookup, key, value).To([output, hits]) 35b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangmodel = model.RelaxedExecution(True) 36b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 37b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wanginput0 = {lookup: [1234, -292, -11, 0], 38b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang key: [-11, 0, 1234], 39b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang value: table} 40b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 41b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wangoutput0 = {output: 42b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang [ 43b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 2.0, 2.1, # 2-rd item 44b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 0, 0, # Not found 45b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 0.0, 0.1, # 0-th item 46b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 1.0, 1.1, # 1-st item 47b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang ], 48b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang hits: 49b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang [ 50b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 1, 0, 1, 1, 51b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang ] 52b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang} 53b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang 54b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao Wang# Instantiate an example 55b74d2837ab1687c1a4f913aa5f90a9838efe0addMiao WangExample((input0, output0)) 56