{
}
+VectorInputAccessor::VectorInputAccessor(const float* inputData, const android::nn::Shape& inputShape)
+ : _inputData(inputData)
+ , _inputShape(inputShape)
+{
+}
+
WeightAccessor::WeightAccessor(const float* filterData, const android::nn::Shape& filterShape)
: _filterData(filterData)
, _filterShape(filterShape)
return true;
}
+bool VectorInputAccessor::access_tensor(arm_compute::ITensor &tensor)
+{
+ arm_compute::Window window;
+ window.use_tensor_dimensions(tensor.info()->tensor_shape());
+
+ assert(tensor.info()->tensor_shape().num_dimensions() == 1);
+
+ execute_window_loop(window, [&](const arm_compute::Coordinates& id)
+ {
+ uint32_t offset = id[0];
+
+ *reinterpret_cast<float *>(tensor.ptr_to_element(id)) =
+ *(_inputData + offset);
+ });
+ return true;
+}
+
bool WeightAccessor::access_tensor(arm_compute::ITensor &tensor)
{
arm_compute::Window window;
const android::nn::Shape& _inputShape;
};
+class VectorInputAccessor : public arm_compute::graph::ITensorAccessor
+{
+public:
+ VectorInputAccessor(const float* inputData, const android::nn::Shape& inputShape);
+ VectorInputAccessor(VectorInputAccessor&&) = default;
+
+ // Inherited methods overriden:
+ bool access_tensor(arm_compute::ITensor& tensor) override;
+
+private:
+ const float* _inputData;
+ const android::nn::Shape& _inputShape;
+};
+
class WeightAccessor : public arm_compute::graph::ITensorAccessor
{
public: