ONE - On-device Neural Engine
Loading...
Searching...
No Matches
Reshape.cpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include "Reshape.h"
18#include "Convert.h"
19
20#include <cassert>
21#include <vector>
22
23namespace
24{
25
26std::vector<int32_t> vector_new_shape(const tflchef::ReshapeOptions &options)
27{
28 std::vector<int32_t> shapes;
29
30 for (int i = 0; i < options.new_shape_size(); ++i)
31 {
32 shapes.push_back(options.new_shape(i));
33 }
34
35 return shapes;
36}
37
38} // namespace
39
41{
42 auto &operation = (*_operation);
43
44 if (!operation.has_reshape_options())
45 return 0;
46
47 auto options = operation.reshape_options();
48 auto shapes = vector_new_shape(options);
49 // Note: 'CreateVector' should be placed before 'options_builder'
50 // Read flatbuffers.h 'void NotNested()' for more information
51 auto fb_new_shape = fbb.CreateVector(shapes);
52
53 tflite::ReshapeOptionsBuilder options_builder{fbb};
54
55 options_builder.add_new_shape(fb_new_shape);
56
57 return options_builder.Finish().Union();
58}
59
60std::unique_ptr<OpChef> ReshapeChefFactory::create(const tflchef::Operation *operation) const
61{
62 return std::unique_ptr<OpChef>{new ReshapeChef{operation}};
63}
flatbuffers::Offset< void > value(flatbuffers::FlatBufferBuilder &fbb) const override
Definition Reshape.cpp:40
Helper class to hold data needed in creation of a FlatBuffer. To serialize data, you typically call o...
void Finish(Offset< T > root, const char *file_identifier=nullptr)
Finish serializing a buffer by writing the root offset.
Offset< Vector< T > > CreateVector(const T *v, size_t len)
Serialize an array into a FlatBuffer vector.
std::unique_ptr< OpChef > create(const tflchef::Operation *operation) const override
Definition Reshape.cpp:60