summaryrefslogtreecommitdiff
path: root/compiler/tflchef/tflite/src/RecipeChef.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/tflchef/tflite/src/RecipeChef.cpp')
-rw-r--r--compiler/tflchef/tflite/src/RecipeChef.cpp122
1 files changed, 7 insertions, 115 deletions
diff --git a/compiler/tflchef/tflite/src/RecipeChef.cpp b/compiler/tflchef/tflite/src/RecipeChef.cpp
index 32ac9c3f3..0a26ae066 100644
--- a/compiler/tflchef/tflite/src/RecipeChef.cpp
+++ b/compiler/tflchef/tflite/src/RecipeChef.cpp
@@ -35,16 +35,9 @@ void set_inputs(TFliteImport *import, tflchef::Operation *operation, const tflit
for (auto input : inputs)
{
- if (input == -1)
- {
- operation->add_input("");
- }
- else
- {
- auto tensor = tensors->Get(input);
- std::string name = tensor_name(tensor);
- operation->add_input(name);
- }
+ auto tensor = tensors->Get(input);
+ std::string name = tensor_name(tensor);
+ operation->add_input(name);
}
}
@@ -110,21 +103,16 @@ std::unique_ptr<ModelRecipe> generate_recipe(const tflite::Model *model)
operand->set_name(tensor_name(tensor));
operand->set_type(as_tflchef_type(tensor->type()));
- operand->set_is_variable(tensor->is_variable());
- if (tensor->shape())
+ std::vector<int32_t> dims = as_index_vector(tensor->shape());
+ ::tflchef::TensorShape *shape = operand->mutable_shape();
+ for (auto dim : dims)
{
- std::vector<int32_t> dims = as_index_vector(tensor->shape());
- ::tflchef::TensorShape *shape = operand->mutable_shape();
- for (auto dim : dims)
- {
- shape->add_dim(dim);
- }
+ shape->add_dim(dim);
}
// filler for weights, bias and so on
std::vector<int32_t> expvalues;
- std::vector<float> expfvalues;
if (tflite_import.get_tensor_filler(i))
{
tflchef::TensorFiller *filler = operand->mutable_filler();
@@ -144,17 +132,6 @@ std::unique_ptr<ModelRecipe> generate_recipe(const tflite::Model *model)
filler->add_arg(ss.str());
}
}
- else if (tflite_import.get_tensor_filler(i, expfvalues))
- {
- tflchef::TensorFiller *filler = operand->mutable_filler();
- filler->set_tag("explicit");
- for (auto value : expfvalues)
- {
- std::ostringstream ss;
- ss << value;
- filler->add_arg(ss.str());
- }
- }
auto quant = tensor->quantization();
if (quant != nullptr)
@@ -185,91 +162,6 @@ std::unique_ptr<ModelRecipe> generate_recipe(const tflite::Model *model)
for (uint32_t idx = 0; idx < quant->zero_point()->size(); ++idx)
chef_quant->add_zero_point(quant->zero_point()->Get(idx));
}
- tflchef::TensorQuantization *chef_quant = operand->mutable_quant();
- chef_quant->set_quantized_dimension(quant->quantized_dimension());
- }
-
- auto sparsity = tensor->sparsity();
- if (sparsity != nullptr)
- {
- tflchef::TensorSparsity *chef_sparsity = operand->mutable_sparsity();
- // traversal_order
- auto chef_traversal_order = chef_sparsity->mutable_traversal_order();
- for (const auto &to : *(sparsity->traversal_order()))
- {
- chef_traversal_order->add_dim(to);
- }
- // block_map
- auto chef_block_map = chef_sparsity->mutable_block_map();
- for (const auto &bm : *(sparsity->block_map()))
- {
- chef_block_map->add_dim(bm);
- }
- // dim_metadata
- for (const auto &dm : *(sparsity->dim_metadata()))
- {
- auto chef_dm = chef_sparsity->add_dim_metadata();
- // format
- chef_dm->set_format(as_tflchef_sparse_dim_type(dm->format()));
- // dense_size
- chef_dm->set_dense_size(dm->dense_size());
- // array_segments
- auto chef_array_segments = chef_dm->mutable_array_segments();
- switch (dm->array_segments_type())
- {
- case tflite::SparseIndexVector_NONE:
- // DO NOTHING
- break;
- case tflite::SparseIndexVector_Int32Vector:
- for (const auto &as : *(dm->array_segments_as_Int32Vector()->values()))
- {
- chef_array_segments->add_dim(as);
- }
- break;
- case tflite::SparseIndexVector_Uint16Vector:
- for (const auto &as : *(dm->array_segments_as_Uint16Vector()->values()))
- {
- chef_array_segments->add_dim(as);
- }
- break;
- case tflite::SparseIndexVector_Uint8Vector:
- for (const auto &as : *(dm->array_segments_as_Uint8Vector()->values()))
- {
- chef_array_segments->add_dim(as);
- }
- break;
- default:
- throw std::runtime_error("unsupported sparse index vector type");
- }
- // array_indices
- auto chef_array_indices = chef_dm->mutable_array_indices();
- switch (dm->array_indices_type())
- {
- case tflite::SparseIndexVector_NONE:
- // DO NOTHING
- break;
- case tflite::SparseIndexVector_Int32Vector:
- for (const auto &as : *(dm->array_indices_as_Int32Vector()->values()))
- {
- chef_array_indices->add_dim(as);
- }
- break;
- case tflite::SparseIndexVector_Uint16Vector:
- for (const auto &as : *(dm->array_indices_as_Uint16Vector()->values()))
- {
- chef_array_indices->add_dim(as);
- }
- break;
- case tflite::SparseIndexVector_Uint8Vector:
- for (const auto &as : *(dm->array_indices_as_Uint8Vector()->values()))
- {
- chef_array_indices->add_dim(as);
- }
- break;
- default:
- throw std::runtime_error("unsupported sparse index vector type");
- }
- }
}
}