aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Bentham <matthew.bentham@arm.com>2023-02-23 13:03:46 +0000
committerFrancis Murtagh <francis.murtagh@arm.com>2023-02-28 12:36:12 +0000
commitaeec3ce5c8f936fb1220a9de8c84cceef88d4080 (patch)
tree87e676cecdd4f81be53e33c484721f9448e313a2
parent2a764ade6b5bf88cba0c43303291e0352ec3354c (diff)
downloadarmnn-aeec3ce5c8f936fb1220a9de8c84cceef88d4080.tar.gz
Add constant version of IConnectableLayer::GetConstantTensorsByRef
This makes it easier to use, particularly in backends where it is common to pass around const pointers to IConnectableLayer. The non-constant version is rewritten to use the constant version. Signed-off-by: Matthew Bentham <matthew.bentham@arm.com> Change-Id: Id3a8384447e93c213299a85ade9a667df5960534
-rw-r--r--delegate/src/MultiLayerFacade.hpp1
-rw-r--r--include/armnn/INetwork.hpp5
-rw-r--r--include/armnn/Version.hpp2
-rw-r--r--python/pyarmnn/src/pyarmnn/_version.py2
-rw-r--r--python/pyarmnn/test/test_version.py4
-rw-r--r--src/armnn/Layer.cpp13
-rw-r--r--src/armnn/Layer.hpp6
-rw-r--r--src/armnn/layers/BatchNormalizationLayer.cpp2
-rw-r--r--src/armnn/layers/BatchNormalizationLayer.hpp2
-rw-r--r--src/armnn/layers/ConstantLayer.hpp2
-rw-r--r--src/armnn/layers/Convolution2dLayer.cpp4
-rw-r--r--src/armnn/layers/Convolution2dLayer.hpp2
-rw-r--r--src/armnn/layers/DepthwiseConvolution2dLayer.cpp4
-rw-r--r--src/armnn/layers/DepthwiseConvolution2dLayer.hpp2
-rw-r--r--src/armnn/layers/DetectionPostProcessLayer.cpp2
-rw-r--r--src/armnn/layers/DetectionPostProcessLayer.hpp2
-rw-r--r--src/armnn/layers/FullyConnectedLayer.cpp4
-rw-r--r--src/armnn/layers/FullyConnectedLayer.hpp2
-rw-r--r--src/armnn/layers/LayerWithParameters.hpp4
-rw-r--r--src/armnn/layers/LstmLayer.cpp2
-rw-r--r--src/armnn/layers/LstmLayer.hpp2
-rw-r--r--src/armnn/layers/QLstmLayer.cpp2
-rw-r--r--src/armnn/layers/QLstmLayer.hpp2
-rw-r--r--src/armnn/layers/QuantizedLstmLayer.cpp2
-rw-r--r--src/armnn/layers/QuantizedLstmLayer.hpp2
-rw-r--r--src/armnn/layers/TransposeConvolution2dLayer.cpp2
-rw-r--r--src/armnn/layers/TransposeConvolution2dLayer.hpp2
-rw-r--r--src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp2
-rw-r--r--src/armnn/layers/UnidirectionalSequenceLstmLayer.hpp2
29 files changed, 54 insertions, 31 deletions
diff --git a/delegate/src/MultiLayerFacade.hpp b/delegate/src/MultiLayerFacade.hpp
index aa00be8f60..31a7354382 100644
--- a/delegate/src/MultiLayerFacade.hpp
+++ b/delegate/src/MultiLayerFacade.hpp
@@ -123,6 +123,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
ConstantTensors GetConstantTensorsByRef() override { return {}; }
+ ImmutableConstantTensors GetConstantTensorsByRef() const override { return {}; }
private:
armnn::IConnectableLayer* m_FirstLayer;
diff --git a/include/armnn/INetwork.hpp b/include/armnn/INetwork.hpp
index c9c8a04656..c944d09d41 100644
--- a/include/armnn/INetwork.hpp
+++ b/include/armnn/INetwork.hpp
@@ -126,6 +126,11 @@ public:
// Returns ConstantTensors of this Layer if it has any, otherwise returns empty vector.
virtual ConstantTensors GetConstantTensorsByRef() = 0;
+ using ImmutableConstantTensors = std::vector<std::reference_wrapper<const std::shared_ptr<ConstTensorHandle>>>;
+
+ // Returns ConstantTensors of this Layer if it has any, otherwise returns empty vector.
+ virtual ImmutableConstantTensors GetConstantTensorsByRef() const = 0;
+
protected:
/// Objects are not deletable via the handle
~IConnectableLayer() {}
diff --git a/include/armnn/Version.hpp b/include/armnn/Version.hpp
index aedd4a0c0b..82d546a56a 100644
--- a/include/armnn/Version.hpp
+++ b/include/armnn/Version.hpp
@@ -11,7 +11,7 @@
// ArmNN version components
#define ARMNN_MAJOR_VERSION 32
-#define ARMNN_MINOR_VERSION 0
+#define ARMNN_MINOR_VERSION 1
#define ARMNN_PATCH_VERSION 0
/// ARMNN_VERSION: "X.Y.Z"
diff --git a/python/pyarmnn/src/pyarmnn/_version.py b/python/pyarmnn/src/pyarmnn/_version.py
index 4501f88ab5..f7decd3eb3 100644
--- a/python/pyarmnn/src/pyarmnn/_version.py
+++ b/python/pyarmnn/src/pyarmnn/_version.py
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: MIT
import os
-version_info = (32, 0, 0)
+version_info = (32, 1, 0)
__dev_version_env = os.getenv("PYARMNN_DEV_VER", "")
diff --git a/python/pyarmnn/test/test_version.py b/python/pyarmnn/test/test_version.py
index 145fc3bc04..8ba93efd3d 100644
--- a/python/pyarmnn/test/test_version.py
+++ b/python/pyarmnn/test/test_version.py
@@ -18,7 +18,7 @@ def test_dev_version():
importlib.reload(v)
- assert "32.0.0.dev1" == v.__version__
+ assert "32.1.0.dev1" == v.__version__
del os.environ["PYARMNN_DEV_VER"]
del v
@@ -30,7 +30,7 @@ def test_arm_version_not_affected():
importlib.reload(v)
- assert "32.0.0" == v.__arm_ml_version__
+ assert "32.1.0" == v.__arm_ml_version__
del os.environ["PYARMNN_DEV_VER"]
del v
diff --git a/src/armnn/Layer.cpp b/src/armnn/Layer.cpp
index 19337dca5c..3ccce40a19 100644
--- a/src/armnn/Layer.cpp
+++ b/src/armnn/Layer.cpp
@@ -538,6 +538,19 @@ void Layer::ExecuteStrategy(IStrategy& strategy) const
strategy.ExecuteStrategy(this, BaseDescriptor(), {}, GetName());
}
+Layer::ConstantTensors Layer::GetConstantTensorsByRef()
+{
+ const Layer *constThis = const_cast<const Layer*>(this);
+ ConstantTensors res;
+
+ ImmutableConstantTensors immutableData = constThis->GetConstantTensorsByRef();
+ for (auto i : immutableData)
+ {
+ res.push_back(const_cast<std::shared_ptr<ConstTensorHandle>&>(i.get()));
+ }
+ return res;
+}
+
const IConnectableLayer& OutputSlot::GetOwningIConnectableLayer() const
{
return m_OwningLayer;
diff --git a/src/armnn/Layer.hpp b/src/armnn/Layer.hpp
index aab5227b75..ad6c9b298e 100644
--- a/src/armnn/Layer.hpp
+++ b/src/armnn/Layer.hpp
@@ -406,7 +406,11 @@ protected:
// Retrieve the Handles to the constants
// Marking this as override and having this here keeps IConnectable abstract with only pure virtual function
- virtual ConstantTensors GetConstantTensorsByRef() override {return ConstantTensors(); };
+ virtual ConstantTensors GetConstantTensorsByRef() override final;
+
+ // Retrieve the Handles to the constants
+ // Marking this as override and having this here keeps IConnectable abstract with only pure virtual function
+ virtual ImmutableConstantTensors GetConstantTensorsByRef() const override { return ImmutableConstantTensors(); };
// "Blob"
AdditionalInfoObjectPtr m_AdditionalInfoObject;
diff --git a/src/armnn/layers/BatchNormalizationLayer.cpp b/src/armnn/layers/BatchNormalizationLayer.cpp
index 6f0e1a82a8..b5e9f2c413 100644
--- a/src/armnn/layers/BatchNormalizationLayer.cpp
+++ b/src/armnn/layers/BatchNormalizationLayer.cpp
@@ -65,7 +65,7 @@ void BatchNormalizationLayer::ValidateTensorShapesFromInputs()
}
-Layer::ConstantTensors BatchNormalizationLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors BatchNormalizationLayer::GetConstantTensorsByRef() const
{
// For API stability DO NOT ALTER order and add new members to the end of vector
return {m_Mean, m_Variance, m_Beta, m_Gamma};
diff --git a/src/armnn/layers/BatchNormalizationLayer.hpp b/src/armnn/layers/BatchNormalizationLayer.hpp
index 9715c56094..1b61c78130 100644
--- a/src/armnn/layers/BatchNormalizationLayer.hpp
+++ b/src/armnn/layers/BatchNormalizationLayer.hpp
@@ -52,7 +52,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
- ConstantTensors GetConstantTensorsByRef() override;
+ ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace
diff --git a/src/armnn/layers/ConstantLayer.hpp b/src/armnn/layers/ConstantLayer.hpp
index f5ab5464f2..08b9c24273 100644
--- a/src/armnn/layers/ConstantLayer.hpp
+++ b/src/armnn/layers/ConstantLayer.hpp
@@ -53,7 +53,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
// For API stability DO NOT ALTER order and add new members to the end of vector
- ConstantTensors GetConstantTensorsByRef() override { return {m_LayerOutput}; }
+ ImmutableConstantTensors GetConstantTensorsByRef() const override { return {m_LayerOutput}; }
};
} // namespace
diff --git a/src/armnn/layers/Convolution2dLayer.cpp b/src/armnn/layers/Convolution2dLayer.cpp
index e06b45acb0..f6a5583aad 100644
--- a/src/armnn/layers/Convolution2dLayer.cpp
+++ b/src/armnn/layers/Convolution2dLayer.cpp
@@ -119,9 +119,9 @@ void Convolution2dLayer::ValidateTensorShapesFromInputs()
ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "Convolution2dLayer");
}
-Layer::ConstantTensors Convolution2dLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors Convolution2dLayer::GetConstantTensorsByRef() const
{
- Layer::ConstantTensors tensors = GetConnectedConstantAsInputTensors();
+ Layer::ImmutableConstantTensors tensors = GetConnectedConstantAsInputTensors();
return tensors;
}
diff --git a/src/armnn/layers/Convolution2dLayer.hpp b/src/armnn/layers/Convolution2dLayer.hpp
index f7e4dec72f..519d8c43be 100644
--- a/src/armnn/layers/Convolution2dLayer.hpp
+++ b/src/armnn/layers/Convolution2dLayer.hpp
@@ -56,7 +56,7 @@ protected:
/// Retrieve the handles to the constant values connected to the layer.
/// @return A vector of the constant tensors connected to the layer.
- ConstantTensors GetConstantTensorsByRef() override;
+ ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace
diff --git a/src/armnn/layers/DepthwiseConvolution2dLayer.cpp b/src/armnn/layers/DepthwiseConvolution2dLayer.cpp
index 4c97437a1c..1e5a998119 100644
--- a/src/armnn/layers/DepthwiseConvolution2dLayer.cpp
+++ b/src/armnn/layers/DepthwiseConvolution2dLayer.cpp
@@ -123,9 +123,9 @@ void DepthwiseConvolution2dLayer::ValidateTensorShapesFromInputs()
ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "DepthwiseConvolution2dLayer");
}
-Layer::ConstantTensors DepthwiseConvolution2dLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors DepthwiseConvolution2dLayer::GetConstantTensorsByRef() const
{
- Layer::ConstantTensors tensors = GetConnectedConstantAsInputTensors();
+ Layer::ImmutableConstantTensors tensors = GetConnectedConstantAsInputTensors();
return tensors;
}
diff --git a/src/armnn/layers/DepthwiseConvolution2dLayer.hpp b/src/armnn/layers/DepthwiseConvolution2dLayer.hpp
index ef7410f1d3..d69d779721 100644
--- a/src/armnn/layers/DepthwiseConvolution2dLayer.hpp
+++ b/src/armnn/layers/DepthwiseConvolution2dLayer.hpp
@@ -56,7 +56,7 @@ protected:
/// Retrieve the handles to the constant values connected to the layer.
/// @return A vector of the constant tensors connected to the layer.
- ConstantTensors GetConstantTensorsByRef() override;
+ ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace
diff --git a/src/armnn/layers/DetectionPostProcessLayer.cpp b/src/armnn/layers/DetectionPostProcessLayer.cpp
index 33f894414a..27e459b0ce 100644
--- a/src/armnn/layers/DetectionPostProcessLayer.cpp
+++ b/src/armnn/layers/DetectionPostProcessLayer.cpp
@@ -89,7 +89,7 @@ std::vector<TensorShape> DetectionPostProcessLayer::InferOutputShapes(const std:
return results;
}
-Layer::ConstantTensors DetectionPostProcessLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors DetectionPostProcessLayer::GetConstantTensorsByRef() const
{
// For API stability DO NOT ALTER order and add new members to the end of vector
return { m_Anchors };
diff --git a/src/armnn/layers/DetectionPostProcessLayer.hpp b/src/armnn/layers/DetectionPostProcessLayer.hpp
index e203032db0..93939bf3e3 100644
--- a/src/armnn/layers/DetectionPostProcessLayer.hpp
+++ b/src/armnn/layers/DetectionPostProcessLayer.hpp
@@ -53,7 +53,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
- ConstantTensors GetConstantTensorsByRef() override;
+ ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace armnn
diff --git a/src/armnn/layers/FullyConnectedLayer.cpp b/src/armnn/layers/FullyConnectedLayer.cpp
index 05c53961e3..f86f58443f 100644
--- a/src/armnn/layers/FullyConnectedLayer.cpp
+++ b/src/armnn/layers/FullyConnectedLayer.cpp
@@ -61,9 +61,9 @@ void FullyConnectedLayer::ValidateTensorShapesFromInputs()
ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "FullyConnectedLayer");
}
-Layer::ConstantTensors FullyConnectedLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors FullyConnectedLayer::GetConstantTensorsByRef() const
{
- Layer::ConstantTensors tensors = GetConnectedConstantAsInputTensors();
+ Layer::ImmutableConstantTensors tensors = GetConnectedConstantAsInputTensors();
return tensors;
}
diff --git a/src/armnn/layers/FullyConnectedLayer.hpp b/src/armnn/layers/FullyConnectedLayer.hpp
index f3ca696b62..e133def144 100644
--- a/src/armnn/layers/FullyConnectedLayer.hpp
+++ b/src/armnn/layers/FullyConnectedLayer.hpp
@@ -54,7 +54,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
- ConstantTensors GetConstantTensorsByRef() override;
+ ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace
diff --git a/src/armnn/layers/LayerWithParameters.hpp b/src/armnn/layers/LayerWithParameters.hpp
index 40ade95d5c..0a1dbf363c 100644
--- a/src/armnn/layers/LayerWithParameters.hpp
+++ b/src/armnn/layers/LayerWithParameters.hpp
@@ -56,9 +56,9 @@ protected:
strategy.ExecuteStrategy(this, GetParameters(), {}, GetName());
}
- Layer::ConstantTensors GetConnectedConstantAsInputTensors()
+ Layer::ImmutableConstantTensors GetConnectedConstantAsInputTensors() const
{
- Layer::ConstantTensors tensors;
+ Layer::ImmutableConstantTensors tensors;
for (unsigned int i = 0; i < GetNumInputSlots(); ++i)
{
if (GetInputSlot(i).GetConnection() && GetInputSlot(i).GetConnection()->GetTensorInfo().IsConstant())
diff --git a/src/armnn/layers/LstmLayer.cpp b/src/armnn/layers/LstmLayer.cpp
index 8e6bfdba3e..2c9604396b 100644
--- a/src/armnn/layers/LstmLayer.cpp
+++ b/src/armnn/layers/LstmLayer.cpp
@@ -267,7 +267,7 @@ void LstmLayer::ValidateTensorShapesFromInputs()
}
}
-Layer::ConstantTensors LstmLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors LstmLayer::GetConstantTensorsByRef() const
{
// For API stability DO NOT ALTER order and add new members to the end of vector
return {m_BasicParameters.m_InputToForgetWeights,
diff --git a/src/armnn/layers/LstmLayer.hpp b/src/armnn/layers/LstmLayer.hpp
index 7310d41238..0462403051 100644
--- a/src/armnn/layers/LstmLayer.hpp
+++ b/src/armnn/layers/LstmLayer.hpp
@@ -57,7 +57,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
- Layer::ConstantTensors GetConstantTensorsByRef() override;
+ Layer::ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace
diff --git a/src/armnn/layers/QLstmLayer.cpp b/src/armnn/layers/QLstmLayer.cpp
index 5d44c8f12d..bfdbe16155 100644
--- a/src/armnn/layers/QLstmLayer.cpp
+++ b/src/armnn/layers/QLstmLayer.cpp
@@ -269,7 +269,7 @@ void QLstmLayer::ValidateTensorShapesFromInputs()
}
}
-Layer::ConstantTensors QLstmLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors QLstmLayer::GetConstantTensorsByRef() const
{
// For API stability DO NOT ALTER order and add new members to the end of vector
return {m_BasicParameters.m_InputToForgetWeights,
diff --git a/src/armnn/layers/QLstmLayer.hpp b/src/armnn/layers/QLstmLayer.hpp
index 115c47bddb..a269d562f6 100644
--- a/src/armnn/layers/QLstmLayer.hpp
+++ b/src/armnn/layers/QLstmLayer.hpp
@@ -119,7 +119,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
- Layer::ConstantTensors GetConstantTensorsByRef() override;
+ Layer::ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace armnn
diff --git a/src/armnn/layers/QuantizedLstmLayer.cpp b/src/armnn/layers/QuantizedLstmLayer.cpp
index 9d58d25f60..a213a1b5b0 100644
--- a/src/armnn/layers/QuantizedLstmLayer.cpp
+++ b/src/armnn/layers/QuantizedLstmLayer.cpp
@@ -148,7 +148,7 @@ void QuantizedLstmLayer::ValidateTensorShapesFromInputs()
1);
}
-Layer::ConstantTensors QuantizedLstmLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors QuantizedLstmLayer::GetConstantTensorsByRef() const
{
// For API stability DO NOT ALTER order and add new members to the end of vector
return
diff --git a/src/armnn/layers/QuantizedLstmLayer.hpp b/src/armnn/layers/QuantizedLstmLayer.hpp
index 8def0f3f10..1bca70cab9 100644
--- a/src/armnn/layers/QuantizedLstmLayer.hpp
+++ b/src/armnn/layers/QuantizedLstmLayer.hpp
@@ -81,7 +81,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
- Layer::ConstantTensors GetConstantTensorsByRef() override;
+ Layer::ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace armnn
diff --git a/src/armnn/layers/TransposeConvolution2dLayer.cpp b/src/armnn/layers/TransposeConvolution2dLayer.cpp
index eec42fbb78..f79c5887fb 100644
--- a/src/armnn/layers/TransposeConvolution2dLayer.cpp
+++ b/src/armnn/layers/TransposeConvolution2dLayer.cpp
@@ -116,7 +116,7 @@ void TransposeConvolution2dLayer::ValidateTensorShapesFromInputs()
ValidateAndCopyShape(outputShape, expectedOutputShape[0], m_ShapeInferenceMethod, "TransposeConvolution2dLayer");
}
-Layer::ConstantTensors TransposeConvolution2dLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors TransposeConvolution2dLayer::GetConstantTensorsByRef() const
{
// For API stability DO NOT ALTER order and add new members to the end of vector
return {m_Weight, m_Bias};
diff --git a/src/armnn/layers/TransposeConvolution2dLayer.hpp b/src/armnn/layers/TransposeConvolution2dLayer.hpp
index 1fa2902dfe..04889d9dda 100644
--- a/src/armnn/layers/TransposeConvolution2dLayer.hpp
+++ b/src/armnn/layers/TransposeConvolution2dLayer.hpp
@@ -54,7 +54,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
- ConstantTensors GetConstantTensorsByRef() override;
+ ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace armnn
diff --git a/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp b/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp
index 857f369cb6..7ae08834e6 100644
--- a/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp
+++ b/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp
@@ -274,7 +274,7 @@ void UnidirectionalSequenceLstmLayer::ValidateTensorShapesFromInputs()
ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "UnidirectionalSequenceLstmLayer");
}
-Layer::ConstantTensors UnidirectionalSequenceLstmLayer::GetConstantTensorsByRef()
+Layer::ImmutableConstantTensors UnidirectionalSequenceLstmLayer::GetConstantTensorsByRef() const
{
// For API stability DO NOT ALTER order and add new members to the end of vector
return {m_BasicParameters.m_InputToForgetWeights,
diff --git a/src/armnn/layers/UnidirectionalSequenceLstmLayer.hpp b/src/armnn/layers/UnidirectionalSequenceLstmLayer.hpp
index 60b6893627..d7e95140ff 100644
--- a/src/armnn/layers/UnidirectionalSequenceLstmLayer.hpp
+++ b/src/armnn/layers/UnidirectionalSequenceLstmLayer.hpp
@@ -58,7 +58,7 @@ protected:
/// Retrieve the handles to the constant values stored by the layer.
/// @return A vector of the constant tensors stored by this layer.
- Layer::ConstantTensors GetConstantTensorsByRef() override;
+ Layer::ImmutableConstantTensors GetConstantTensorsByRef() const override;
};
} // namespace