@@ -823,12 +823,39 @@ def less_equal(x1, x2):
823
823
824
824
825
825
def linspace (
826
- start , stop , num = 50 , endpoint = True , retstep = False , dtype = None , axis = 0
826
+ start , stop , num = 50 , endpoint = True , retstep = False , dtype = None , axis = 0
827
827
):
828
- raise NotImplementedError (
829
- "`linspace` is not supported with openvino backend"
830
- )
828
+ start = get_ov_output (start )
829
+ stop = get_ov_output (stop )
830
+
831
+ if dtype is not None :
832
+ ov_type = OPENVINO_DTYPES [standardize_dtype (dtype )]
833
+ else :
834
+ ov_type = OPENVINO_DTYPES [config .floatx ()]
835
+
836
+ if num < 0 :
837
+ raise ValueError (f"Number of samples, { num } , must be non-negative." )
838
+ elif num == 0 :
839
+ range_vals = ov_opset .constant ([], dtype = ov_type ).output (0 )
840
+ if retstep :
841
+ return OpenVINOKerasTensor (range_vals ), 0
842
+ return OpenVINOKerasTensor (range_vals )
843
+
844
+ start = ov_opset .convert (start , ov_type ).output (0 )
845
+ stop = ov_opset .convert (stop , ov_type ).output (0 )
846
+
847
+ if endpoint :
848
+ num = num - 1
849
+ step = ov_opset .divide (ov_opset .subtract (stop , start ), ov_opset .constant (num , dtype = ov_type )).output (0 )
850
+ stop = ov_opset .add (stop , step ).output (0 )
851
+ else :
852
+ step = ov_opset .divide (ov_opset .subtract (stop , start ), ov_opset .constant (num , dtype = ov_type )).output (0 )
853
+
854
+ range_vals = ov_opset .range (start , stop , step , ov_type ).output (0 )
831
855
856
+ if retstep :
857
+ return OpenVINOKerasTensor (range_vals ), step
858
+ return OpenVINOKerasTensor (range_vals )
832
859
833
860
def log (x ):
834
861
x = get_ov_output (x )
0 commit comments