11588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// Copyright 2017 The TensorFlow Authors. All Rights Reserved. 21588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// 31588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// Licensed under the Apache License, Version 2.0 (the "License"); 41588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// you may not use this file except in compliance with the License. 51588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// You may obtain a copy of the License at 61588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// 71588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// http://www.apache.org/licenses/LICENSE-2.0 81588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// 91588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// Unless required by applicable law or agreed to in writing, software 101588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// distributed under the License is distributed on an "AS IS" BASIS, 111588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// See the License for the specific language governing permissions and 131588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// limitations under the License. 141588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower// ============================================================================= 151588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower#include "tensorflow/contrib/tensor_forest/kernels/v4/params.h" 161588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower#include <math.h> 171588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower#include <stdlib.h> 181588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower#include "tensorflow/core/platform/logging.h" 191588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower 201588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlowernamespace tensorflow { 211588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlowernamespace tensorforest { 221588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower 231588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlowerfloat ResolveParam(const DepthDependentParam& param, int32 depth) { 241588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower float val; 251588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower switch (param.ParamType_case()) { 261588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower case DepthDependentParam::kConstantValue: 271588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower return param.constant_value(); 281588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower 291588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower case DepthDependentParam::kLinear: 301588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower val = depth * param.linear().slope() + param.linear().y_intercept(); 311588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower return std::min(std::max(val, param.linear().min_val()), 321588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower param.linear().max_val()); 331588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower 341588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower case DepthDependentParam::kExponential: 351588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower return param.exponential().bias() + 361588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower param.exponential().multiplier() * 371588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower static_cast<float>( 381588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower pow(param.exponential().base(), 391588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower param.exponential().depth_multiplier() * depth)); 401588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower 411588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower case DepthDependentParam::kThreshold: 421588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower if (depth >= param.threshold().threshold()) { 431588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower return param.threshold().on_value(); 441588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower } else { 451588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower return param.threshold().off_value(); 461588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower } 471588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower 481588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower default: 491588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower LOG(FATAL) << "unknown parameter type"; 501588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower } 511588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower} 521588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower 531588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower} // namespace tensorforest 541588d3790d759ee8a50e2bcf17b1eeadca69ba30A. Unique TensorFlower} // namespace tensorflow 55