Home | History | Annotate | Download | only in lite
      1 /* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
      2 
      3 Licensed under the Apache License, Version 2.0 (the "License");
      4 you may not use this file except in compliance with the License.
      5 You may obtain a copy of the License at
      6 
      7     http://www.apache.org/licenses/LICENSE-2.0
      8 
      9 Unless required by applicable law or agreed to in writing, software
     10 distributed under the License is distributed on an "AS IS" BASIS,
     11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 See the License for the specific language governing permissions and
     13 limitations under the License.
     14 ==============================================================================*/
     15 #ifndef TENSORFLOW_CONTRIB_LITE_BUILTIN_OP_DATA_H_
     16 #define TENSORFLOW_CONTRIB_LITE_BUILTIN_OP_DATA_H_
     17 
     18 #include <stdint.h>
     19 
     20 #ifdef __cplusplus
     21 extern "C" {
     22 #endif  // __cplusplus
     23 
     24 // TODO(aselle): Consider using "if this then that" for testing.
     25 
     26 // Possible padding types (for convolutions)
     27 typedef enum {
     28   kTfLitePaddingUnknown = 0,
     29   kTfLitePaddingSame,
     30   kTfLitePaddingValid,
     31 } TfLitePadding;
     32 
     33 typedef struct {
     34   int width;
     35   int height;
     36 } TfLitePaddingValues;
     37 
     38 // Possible fused activation functions.
     39 // TODO(aselle): rename to TfLiteActivation
     40 typedef enum {
     41   kTfLiteActNone = 0,
     42   kTfLiteActRelu,
     43   kTfLiteActRelu1,
     44   kTfLiteActRelu6,
     45   kTfLiteActTanh,
     46   kTfLiteActSignBit,
     47   kTfLiteActSigmoid,
     48 } TfLiteFusedActivation;
     49 
     50 typedef struct {
     51   TfLitePadding padding;
     52   int stride_width;
     53   int stride_height;
     54   TfLiteFusedActivation activation;
     55 } TfLiteConvParams;
     56 
     57 typedef struct {
     58   TfLitePadding padding;
     59   int stride_width;
     60   int stride_height;
     61   int filter_width;
     62   int filter_height;
     63   TfLiteFusedActivation activation;
     64   struct {
     65     TfLitePaddingValues padding;
     66   } computed;
     67 } TfLitePoolParams;
     68 
     69 typedef struct {
     70   TfLitePadding padding;
     71   int stride_width;
     72   int stride_height;
     73   int depth_multiplier;
     74   TfLiteFusedActivation activation;
     75 } TfLiteDepthwiseConvParams;
     76 
     77 typedef struct {
     78   int rank;
     79   TfLiteFusedActivation activation;
     80 } TfLiteSVDFParams;
     81 
     82 typedef struct {
     83   TfLiteFusedActivation activation;
     84 } TfLiteRNNParams;
     85 
     86 typedef struct {
     87   bool time_major;
     88   TfLiteFusedActivation activation;
     89 } TfLiteSequenceRNNParams;
     90 
     91 typedef struct {
     92   TfLiteFusedActivation activation;
     93 } TfLiteFullyConnectedParams;
     94 
     95 typedef enum {
     96   kTfLiteLshProjectionUnknown = 0,
     97   kTfLiteLshProjectionSparse = 1,
     98   kTfLiteLshProjectionDense = 2,
     99 } TfLiteLSHProjectionType;
    100 
    101 typedef struct {
    102   TfLiteLSHProjectionType type;
    103 } TfLiteLSHProjectionParams;
    104 
    105 typedef struct {
    106   float beta;
    107 } TfLiteSoftmaxParams;
    108 
    109 typedef struct {
    110   int axis;
    111   TfLiteFusedActivation activation;
    112 } TfLiteConcatenationParams;
    113 
    114 typedef struct {
    115   TfLiteFusedActivation activation;
    116 } TfLiteAddParams;
    117 
    118 typedef struct {
    119 } TfLiteSpaceToBatchNDParams;
    120 
    121 typedef struct {
    122 } TfLiteBatchToSpaceNDParams;
    123 
    124 typedef struct {
    125   TfLiteFusedActivation activation;
    126 } TfLiteMulParams;
    127 
    128 typedef struct {
    129   TfLiteFusedActivation activation;
    130 } TfLiteSubParams;
    131 
    132 typedef struct {
    133   TfLiteFusedActivation activation;
    134 } TfLiteDivParams;
    135 
    136 typedef struct {
    137   TfLiteFusedActivation activation;
    138 } TfLiteL2NormParams;
    139 
    140 typedef struct {
    141   int radius;
    142   float bias;
    143   float alpha;
    144   float beta;
    145 } TfLiteLocalResponseNormParams;
    146 
    147 typedef struct {
    148   TfLiteFusedActivation activation;
    149   float cell_clip;
    150   float proj_clip;
    151 } TfLiteLSTMParams;
    152 
    153 typedef struct {
    154   bool align_corners;
    155 } TfLiteResizeBilinearParams;
    156 
    157 typedef struct {
    158 } TfLitePadParams;
    159 
    160 typedef struct {
    161   // TODO(ahentz): We can't have dynamic data in this struct, at least not yet.
    162   // For now we will fix the maximum possible number of dimensions.
    163   int shape[8];
    164   int num_dimensions;
    165 } TfLiteReshapeParams;
    166 
    167 typedef struct {
    168   int ngram_size;
    169   int max_skip_size;
    170   bool include_all_ngrams;
    171 } TfLiteSkipGramParams;
    172 
    173 typedef struct {
    174   int block_size;
    175 } TfLiteSpaceToDepthParams;
    176 
    177 typedef enum {
    178   kTfLiteCombinerTypeSum = 0,
    179   kTfLiteCombinerTypeMean = 1,
    180   kTfLiteCombinerTypeSqrtn = 2,
    181 } TfLiteCombinerType;
    182 
    183 typedef struct {
    184   TfLiteCombinerType combiner;
    185 } TfLiteEmbeddingLookupSparseParams;
    186 
    187 typedef struct {
    188   int axis;
    189 } TfLiteGatherParams;
    190 
    191 typedef struct {
    192 } TfLiteTransposeParams;
    193 
    194 typedef struct {
    195   bool keep_dims;
    196 } TfLiteMeanParams;
    197 
    198 typedef struct {
    199   int num_splits;
    200 } TfLiteSplitParams;
    201 
    202 typedef struct {
    203   // TODO(ahentz): We can't have dynamic data in this struct, at least not yet.
    204   // For now we will fix the maximum possible number of dimensions.
    205   int squeeze_dims[8];
    206   int num_squeeze_dims;
    207 } TfLiteSqueezeParams;
    208 
    209 typedef struct {
    210   int begin_mask;
    211   int end_mask;
    212   int ellipsis_mask;
    213   int new_axis_mask;
    214   int shrink_axis_mask;
    215 } TfLiteStridedSliceParams;
    216 
    217 #ifdef __cplusplus
    218 }  // extern "C"
    219 #endif  // __cplusplus
    220 
    221 #endif  // TENSORFLOW_CONTRIB_LITE_BUILTIN_OP_DATA_H_
    222