diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2018-08-02 17:18:51 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:54:54 +0000 |
commit | 195b0ba457d0020e1f54fb0c0378040e1c75d510 (patch) | |
tree | 220244e5390a1c0636616c109b4254b85d574458 /src/graph | |
parent | 57c48243af8fd4b503fe629166531299c1b083d3 (diff) | |
download | ComputeLibrary-195b0ba457d0020e1f54fb0c0378040e1c75d510.tar.gz |
MLCE-36: FC tranpose weights
Change-Id: I3b8a6c00e61ba6da459ca5fc7275393f9d073aed
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/142533
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Tested-by: Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/graph')
-rw-r--r-- | src/graph/GraphBuilder.cpp | 2 | ||||
-rw-r--r-- | src/graph/nodes/FullyConnectedLayer.cpp | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/graph/GraphBuilder.cpp b/src/graph/GraphBuilder.cpp index 996af1dc90..7b09ec98f5 100644 --- a/src/graph/GraphBuilder.cpp +++ b/src/graph/GraphBuilder.cpp @@ -436,7 +436,7 @@ NodeID GraphBuilder::add_fully_connected_layer(Graph &g, NodeParams params, Node const TensorDescriptor input_tensor_desc = get_tensor_descriptor(g, g.node(input.node_id)->outputs()[0]); // Create weights node - TensorDescriptor w_desc = FullyConnectedLayerNode::compute_weights_descriptor(input_tensor_desc, num_outputs, weights_quant_info); + TensorDescriptor w_desc = FullyConnectedLayerNode::compute_weights_descriptor(input_tensor_desc, num_outputs, fc_info, weights_quant_info); NodeID w_nid = add_const_node_with_name(g, params, "Weights", w_desc, std::move(weights_accessor)); // Create bias nodes diff --git a/src/graph/nodes/FullyConnectedLayer.cpp b/src/graph/nodes/FullyConnectedLayer.cpp index f41e1a3c22..6ea0292505 100644 --- a/src/graph/nodes/FullyConnectedLayer.cpp +++ b/src/graph/nodes/FullyConnectedLayer.cpp @@ -40,6 +40,7 @@ FullyConnectedLayerNode::FullyConnectedLayerNode(unsigned int num_outputs, Quant TensorDescriptor FullyConnectedLayerNode::compute_weights_descriptor(const TensorDescriptor &input_descriptor, unsigned int num_outputs, + FullyConnectedLayerInfo fc_info, QuantizationInfo weights_quant_info) { unsigned int num_weights = 1; @@ -57,6 +58,12 @@ TensorDescriptor FullyConnectedLayerNode::compute_weights_descriptor(const Tenso TensorDescriptor weights_descriptor = input_descriptor; weights_descriptor.shape = TensorShape(num_weights, num_outputs); + // If weights are tranposed, use tranposed shape + if(!fc_info.transpose_weights) + { + weights_descriptor.shape = TensorShape(num_outputs, num_weights); + } + // Set quantization info if present if(!weights_quant_info.empty()) { |