tf.linspace和np.linspace的对比分析

解释:

tf.linspace(start, end, num):这个函数主要的参数就这三个,start代表起始的值,end表示结束的值,num表示在这个区间里生成数字的个数,生成的数组是等间隔生成的。start和end这两个数字必须是浮点数,不能是整数,如果是整数会出错的,请注意!

np.linspace(start, end, num):主要的参数也是这三个,我们平时用的时候绝大多数时候就是用这三个参数。start代表起始的值,end表示结束的值,num表示在这个区间里生成数字的个数,生成的数组是等间隔生成的。start和end这两个数字可以是整数或者浮点数!

分析:

这两个函数的功能是差不多的,如果就是用这三个参数,就是相同的,不过生成的结果有一点点十分微小的区别,估计是在近似的时候产生的,也就是近似的方式不同,或者是精度不同产生的,产生间隔的准则是一样的,间隔的计算公式为(end - start) /( num - 1)。产生的num个数字里面,包含了起始值和结束值。

例如:

import tensorflow as tf
import numpy as np
 
A = tf.linspace(1.0, 20.0, 10)
B = np.linspace(1, 20, 10)
 
print A.eval(session=tf.Session())
print B

结果:

[  1.           3.11111116   5.22222233   7.33333349   9.44444466
  11.55555534  13.66666698  15.77777863  17.88888931  20.        ]
[  1.           3.11111111   5.22222222   7.33333333   9.44444444
  11.55555556  13.66666667  15.77777778  17.88888889  20.        ]
--------------------- 
作者:UESTC_C2_403 
来源:CSDN 
原文:https://blog.csdn.net/UESTC_C2_403/article/details/76042152 
版权声明:本文为博主原创文章,转载请附上博文链接!

结果不一样的原因是默认精度不同。NumPy的默认精度是np.float64,而TensorFlow的默认精度是tf.float32。如果把第5行代码改成

 
  1.  
  2. B = np.linspace(1, 20, 10, dtype=np.float32)

  3.  

输出结果就一样了。

你可能感兴趣的:(Tensorflow)