1d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang/* 2d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * Copyright (C) 2017 The Android Open Source Project 3d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * 4d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * Licensed under the Apache License, Version 2.0 (the "License"); 5d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * you may not use this file except in compliance with the License. 6d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * You may obtain a copy of the License at 7d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * 8d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * http://www.apache.org/licenses/LICENSE-2.0 9d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * 10d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * Unless required by applicable law or agreed to in writing, software 11d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * distributed under the License is distributed on an "AS IS" BASIS, 12d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * See the License for the specific language governing permissions and 14d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang * limitations under the License. 15d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang */ 16d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 17d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang#include "Operations.h" 18d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang#include "OperationsUtils.h" 19d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 20d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang#include "internal/optimized/optimized_ops.h" 21d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 22d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wangnamespace android { 23d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wangnamespace nn { 24d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 25d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wangbool l2normFloat32(const float* inputData, const Shape& inputShape, 26d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang float* outputData, const Shape& outputShape) { 27d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang optimized_ops::L2Normalization<FusedActivationFunctionType::kNone>( 28d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang inputData, convertShapeToDims(inputShape), 29d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang outputData, convertShapeToDims(outputShape)); 30d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 31d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang return true; 32d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang} 33d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 34d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wangbool l2normQuant8(const uint8_t* inputData, const Shape& inputShape, 35d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang uint8_t* outputData, const Shape& outputShape) { 36d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang optimized_ops::L2Normalization( 37d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang inputData, convertShapeToDims(inputShape), 38d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang inputShape.offset, 39d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang outputData, convertShapeToDims(outputShape)); 40d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 41d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang return true; 42d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang} 43d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 44d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wangbool localResponseNormFloat32(const float* inputData, const Shape& inputShape, 45d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang int32_t radius, float bias, float alpha, float beta, 46d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang float* outputData, const Shape& outputShape) { 47d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang optimized_ops::LocalResponseNormalization( 48d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang inputData, convertShapeToDims(inputShape), 49d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang radius, bias, alpha, beta, 50d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang outputData, convertShapeToDims(outputShape)); 51d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang 52d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang return true; 53d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang} 54d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang} // namespace nn 55d9bef406eb022b143bb2fa7d98bc4b4cdc79de06Miao Wang} // namespace android 56