diff --git a/include/aidge/backend/cuda/data/TensorImpl.hpp b/include/aidge/backend/cuda/data/TensorImpl.hpp
index 8b62b2dadb9de7857edc343dcddcbac3cbd06920..d7ccdaa9d925f09d88431e8ec1438edba450b570 100644
--- a/include/aidge/backend/cuda/data/TensorImpl.hpp
+++ b/include/aidge/backend/cuda/data/TensorImpl.hpp
@@ -69,12 +69,13 @@ private:
 public:
     static constexpr const char *Backend = "cuda";
 
-    TensorImpl_cuda(DeviceIdx_t device, NbElts_t length) : TensorImpl(Backend, device, length), mDataOwner(nullptr, cudaDelete) {}
+    TensorImpl_cuda(DeviceIdx_t device, std::vector<DimSize_t> dims) : TensorImpl(Backend, device, dims), mDataOwner(nullptr, cudaDelete) {}
+    
 
     bool operator==(const TensorImpl &otherImpl) const override final;
 
-    static std::shared_ptr<TensorImpl_cuda> create(DeviceIdx_t device, NbElts_t length) {
-        return std::make_shared<TensorImpl_cuda<T>>(device, length);
+    static std::shared_ptr<TensorImpl_cuda> create(DeviceIdx_t device, std::vector<DimSize_t> dims) {
+        return std::make_shared<TensorImpl_cuda<T>>(device, dims);
     }
 
     // native interface