diff options
author | Nikhil Raj <nikhil.raj@arm.com> | 2021-04-19 16:59:48 +0100 |
---|---|---|
committer | Nikhil Raj <nikhil.raj@arm.com> | 2021-04-27 17:37:11 +0100 |
commit | 5d955cf70ae0c5558d4f431f0fc6bd4552cd43a5 (patch) | |
tree | 4fb59200899808b8b008d6f48322d0d799b8b631 /src/armnnTfParser/test/FullyConnected.cpp | |
parent | 4a621c43174b6bdd9dc0bff839b245bc2139d6a6 (diff) | |
download | armnn-5d955cf70ae0c5558d4f431f0fc6bd4552cd43a5.tar.gz |
IVGCVSW-5721 Remove the Tensorflow Parser from ArmNN
Signed-off-by: Nikhil Raj <nikhil.raj@arm.com>
Change-Id: Ida37d3ee3a1af0c75aa905199bd861726c646846
Diffstat (limited to 'src/armnnTfParser/test/FullyConnected.cpp')
-rw-r--r-- | src/armnnTfParser/test/FullyConnected.cpp | 579 |
1 files changed, 0 insertions, 579 deletions
diff --git a/src/armnnTfParser/test/FullyConnected.cpp b/src/armnnTfParser/test/FullyConnected.cpp deleted file mode 100644 index 14561c43cd..0000000000 --- a/src/armnnTfParser/test/FullyConnected.cpp +++ /dev/null @@ -1,579 +0,0 @@ -// -// Copyright © 2017 Arm Ltd. All rights reserved. -// SPDX-License-Identifier: MIT -// - -#include <boost/test/unit_test.hpp> -#include "armnnTfParser/ITfParser.hpp" -#include "ParserPrototxtFixture.hpp" -#include "Runtime.hpp" -#include "Network.hpp" -#include "Graph.hpp" - -BOOST_AUTO_TEST_SUITE(TensorflowParser) - -// In Tensorflow fully connected layers are expressed as a MatMul followed by an Add. -// The TfParser must detect this case and convert them to a FullyConnected layer. -struct FullyConnectedFixture : public armnnUtils::ParserPrototxtFixture<armnnTfParser::ITfParser> -{ - FullyConnectedFixture() - { - // Input = tf.placeholder(tf.float32, [1, 1], "input") - // Weights = tf.constant([2], tf.float32, [1, 1]) - // Matmul = tf.matmul(input, weights) - // Bias = tf.constant([1], tf.float32) - // Output = tf.add(matmul, bias, name="output") - m_Prototext = R"( -node { - name: "input" - op: "Placeholder" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - } - } -} -node { - name: "Const" - op: "Const" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - float_val: 2.0 - } - } - } -} -node { - name: "MatMul" - op: "MatMul" - input: "input" - input: "Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } -} -node { - name: "Const_1" - op: "Const" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - } - float_val: 1.0 - } - } - } -} -node { - name: "output" - op: "Add" - input: "MatMul" - input: "Const_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } -} - )"; - SetupSingleInputSingleOutput({ 1, 1 }, "input", "output"); - } -}; - -BOOST_FIXTURE_TEST_CASE(FullyConnected, FullyConnectedFixture) -{ - RunTest<1>({ 3 }, { 7 }); -} - -// Similar to FullyConnectedFixture, but this time the MatMul's output is used by two Adds. This should result -// in two FullyConnected layers being created. -// I -// | -// M -- C -// / \' -// C-- A A -- C -// \ / -// A -struct MatMulUsedInTwoFcFixture : public armnnUtils::ParserPrototxtFixture<armnnTfParser::ITfParser> -{ - MatMulUsedInTwoFcFixture() - { - m_Prototext = R"( -node { - name: "input" - op: "Placeholder" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - } - } -} -node { - name: "Const" - op: "Const" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - float_val: 2.0 - } - } - } -} -node { - name: "MatMul" - op: "MatMul" - input: "input" - input: "Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } -} -node { - name: "Const_1" - op: "Const" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - } - float_val: 5.0 - } - } - } -} -node { - name: "Const_2" - op: "Const" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - } - float_val: 15.0 - } - } - } -} -node { - name: "Add" - op: "Add" - input: "MatMul" - input: "Const_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } -} -node { - name: "Add_1" - op: "Add" - input: "MatMul" - input: "Const_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } -} -node { - name: "output" - op: "Add" - input: "Add" - input: "Add_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } -} - )"; - SetupSingleInputSingleOutput({ 1, 1 }, "input", "output"); - } -}; - -BOOST_FIXTURE_TEST_CASE(MatMulUsedInTwoFc, MatMulUsedInTwoFcFixture) -{ - RunTest<1>({ 3 }, { 32 }); - // Ideally we would check here that the armnn network has 5 layers: - // Input, 2 x FullyConnected (biased), Add and Output. - // This would make sure the parser hasn't incorrectly added some unconnected layers corresponding to the MatMul. -} - -// Similar to MatMulUsedInTwoFc, but this time the Adds are 'staggered' (see diagram), which means that only one -// FullyConnected layer can be created (the other should just be an Add). -// I -// | -// M -- C1 -// / \' -// C2 -- A | -// \ / -// A -struct MatMulUsedInTwoFcStaggeredFixture : public armnnUtils::ParserPrototxtFixture<armnnTfParser::ITfParser> -{ - MatMulUsedInTwoFcStaggeredFixture() - { - // Input = tf.placeholder(tf.float32, shape=[1,1], name = "input") - // Const1 = tf.constant([17], tf.float32, [1,1]) - // Mul = tf.matmul(input, const1) - // Monst2 = tf.constant([7], tf.float32, [1]) - // Fc = tf.add(mul, const2) - // Output = tf.add(mul, fc, name="output") - m_Prototext = R"( -node { - name: "input" - op: "Placeholder" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - } - } -} -node { - name: "Const" - op: "Const" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - float_val: 17.0 - } - } - } -} -node { - name: "MatMul" - op: "MatMul" - input: "input" - input: "Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } -} -node { - name: "Const_1" - op: "Const" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - } - float_val: 7.0 - } - } - } -} -node { - name: "Add" - op: "Add" - input: "MatMul" - input: "Const_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } -} -node { - name: "output" - op: "Add" - input: "MatMul" - input: "Add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } -} - )"; - SetupSingleInputSingleOutput({ 1, 1 }, "input", "output"); - } -}; - -BOOST_FIXTURE_TEST_CASE(MatMulUsedInTwoFcStaggered, MatMulUsedInTwoFcStaggeredFixture) -{ - RunTest<1>({ 2 }, { 75 }); - // Ideally we would check here that the armnn network has 5 layers: - // Input, FullyConnected (biased), FullyConnected (non biased), Add and Output. -} - -// A MatMul in isolation, not connected to an add. Should result in a non-biased FullyConnected layer. -struct MatMulFixture : public armnnUtils::ParserPrototxtFixture<armnnTfParser::ITfParser> -{ - MatMulFixture() - { - // Input = tf.placeholder(tf.float32, shape = [1, 1], name = "input") - // Const = tf.constant([17], tf.float32, [1, 1]) - // Output = tf.matmul(input, const, name = "output") - m_Prototext = R"( -node { - name: "input" - op: "Placeholder" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - } - } -} -node { - name: "Const" - op: "Const" - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - float_val: 17.0 - } - } - } -} -node { - name: "output" - op: "MatMul" - input: "input" - input: "Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } -} - )"; - SetupSingleInputSingleOutput({ 1, 1 }, "input", "output"); - } -}; - -BOOST_FIXTURE_TEST_CASE(MatMul, MatMulFixture) -{ - RunTest<1>({ 2 }, { 34 }); -} - -BOOST_AUTO_TEST_SUITE_END() |