blob: e65daeb2d407492a0cb4c97267f0496e79395062 [file] [log] [blame]
Matthew Benthamf1aeab92023-05-30 13:35:34 +00001/*
2 * Copyright (c) 2016-2023 Arm Limited.
3 *
4 * SPDX-License-Identifier: MIT
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to
8 * deal in the Software without restriction, including without limitation the
9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 * sell copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in all
14 * copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 */
SiCong Li91295492023-07-21 18:16:13 +010024#ifndef ACL_ARM_COMPUTE_FUNCTION_INFO_FULLYCONNECTEDLAYERINFO
25#define ACL_ARM_COMPUTE_FUNCTION_INFO_FULLYCONNECTEDLAYERINFO
Matthew Benthamf1aeab92023-05-30 13:35:34 +000026
SiCong Li91295492023-07-21 18:16:13 +010027#include "arm_compute/core/CoreTypes.h"
28#include "arm_compute/function_info/ActivationLayerInfo.h"
Matthew Benthamf1aeab92023-05-30 13:35:34 +000029
30namespace arm_compute
31{
32/** Fully connected layer info */
33struct FullyConnectedLayerInfo
34{
35 /* Fused-activation parameters */
36 ActivationLayerInfo activation_info{}; /**< Fused activation to apply after the matrix multiplication. */
37 /* Information about weights */
Felix Thomasmathibalanafd38f02023-09-27 17:46:17 +010038 DataLayout weights_trained_layout{DataLayout::NCHW}; /**< Layout that the weights have been trained with. */
39 bool transpose_weights{true}; /**< Transpose weights if true. */
40 bool are_weights_reshaped{false}; /**< @deprecated Reshape the weights tensor if false. */
41 bool retain_internal_weights{false}; /**< Retain internal reshaped weights. */
42 bool enable_fast_math{false}; /**< Enable fast math computation. */
Matthew Benthamf1aeab92023-05-30 13:35:34 +000043 /* Other parameters */
Felix Thomasmathibalanafd38f02023-09-27 17:46:17 +010044 bool fp_mixed_precision{false}; /**< Use wider accumulators (32 bit instead of 16 for FP16) to improve accuracy. */
Matthew Benthamf1aeab92023-05-30 13:35:34 +000045
46 /** Sets the weights trained data layout
47 *
48 * @param[in] layout Data layout that the weights were trained with
49 *
50 * @return Updated object
51 */
52 FullyConnectedLayerInfo &set_weights_trained_layout(DataLayout layout)
53 {
54 weights_trained_layout = layout;
55 return *this;
56 }
57 /** Sets the transpose weights flag
58 *
59 * @param[in] should_transpose_weights Boolean flag indicating if weights should be transposed
60 *
61 * @return Updated object
62 */
63 FullyConnectedLayerInfo &set_transpose_weights(bool should_transpose_weights)
64 {
65 transpose_weights = should_transpose_weights;
66 return *this;
67 }
68};
69
70} // namespace arm_compute
SiCong Li91295492023-07-21 18:16:13 +010071#endif /* ACL_ARM_COMPUTE_FUNCTION_INFO_FULLYCONNECTEDLAYERINFO */