tensorflow生成数据的方式
Tensorflow 提供的可以生成固定常量的运算符
tf.zeros(shape, dtype=tf.float32,name=None)
创建一个指定shape的全部为0的的tensor
tf.zeros_like(tensor, dtype=None, name=None, optimize=True)
给定一个tensor,返回一个全部都是0的shape与输入tensor一样的tensor,如果optimize为True,则attempt to statically determine the shape of ‘tensor’ and encode it as a constant.
tf.ones
和tf.zeros差不多,只不过是把0变成了1
tf.ones_like
和tf.zeros_like差不多,只不过把0变成了1
tf.fill(dim, value, name=None)
tf.fill([3], 3),dim是一个list,value是一个值,返回一个指定dim的shape的,里面全是指定value的tensor
tf.constant(value, dtype=None, shape=None, name=”Const”, verify_shape=False)
value是传入的值,可以使一个值也可以是一个list,如果value是一个list,那么list的长度不能长于shape中规定的长度(长了就会报错),如果比shape中指定的长度短,那么就用list中最后一个元素填充剩下的长度;如果shape没有指定,那么就用value中的shape;如果dtype没有指定的话,就用value中的type;verify_shpe是指是否检查shpae,如果输入和要求的shape不一样,就会报错。
tf.linspace(start, stop, num, name=None)
返回以start开始,以stop结束,一共有num个数的等差数列的tensor,所以当num>1时,步长为:(stop-start)/(num-1),如果num=1,那么就只有start
tf.range(start, limit=None, delta=1, dtype=None, name=”range”)
返回一个tensor:从start开始,以delta为步长,到limit为止,但不包括limit。如果start>limit则报错
TensorFlow提供可以生成随机常量的运算符:
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=dtypes.float32, seed=None, name=None)
返回一个形如shape的元素是随机出来的tensor,其中的元素服从正态分布,seed是一个int值,如果两次seed设置一样,则结果一样
tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=dtypes.float32, seed=None, name=None)
返回一个形如shape的元素是随机出来的tensor,其中的元素服从正态分布,seed是一个int值,如果两次seed设置一样,则结果一样。但重点是,这个函数是一个截断的生成正态分布的函数,如果生成的某个值与均值的差大于两倍的标准差的话,就这个值就会重新随机。
tf.random_uniform(shape, minval=0, maxval=None, dtype=dtype.float32, seed=None, name=None)
返回一个形如shape的元素是随机出来的tensor,其中的元素服从最小值为minval,最大值为maxval的均匀分布。如果dtype为float,则maxval的默认值为1,如果dtype是其他的话,你就需要指定maxval了,否则就报错了。
tf.random_shuffle(value, seed=None, name=None)
返回一个value(list)洗牌后的tensor,洗牌以第一维为基础,就是第一维会打乱,里面的不受影响。
tf.random_crop(value, size, seed=None, name=None)
value是一个list,crop是收割裁剪的意思,就是把value随机的裁剪成size的样子。需要value.shpae>size。如:value=[1,2,3,4],size=[1](size也要是数组),那么结果就是[1(随机)]。注意size的维度要与value相同,如:value=[[1,2],[3,4]],size也需要是[x,x]。
tf.multinomial(logits, num_samples, seed=None, name=None, output_dtype=None)
从多项式分布中采样。具体一点说:logits是一个2-D的tensor,shape为[batch_size, class_nums],而num_samples的意思是,从每行里面sample出几个元素,sample出来的并不是那个元素的值,而是那个元素的序列号。
tf.random_gramma(shape, alpha, beta=None, dtype=dtypes.float32, seed=None, name=None)
返回一个形如shape的tensor,其中的元素服从伽马分布(随机变量X为等到第alpha件事情发生所需等待时间,即为多个独立且相同分布(iid)的指数分布变量的和的分布。)shape是一个1D的tensor或者一个list;alpha:N-D的array,也是shape参数;beta:N-D的array,grammar分布的逆比例尺度参数。tf.random_gamma([10], [0.5, 1.5])->shape为:[10, 2], tf.random_gamma([7, 5], [0.5, 1.5])->shape为[7,5,2],tf.random_gamma([30], [[1.],[3.],[5.]], beta=[[3., 4.]])->shape为[30, 3, 2]。
tf.random_poisson(lam, shape, dtype=dtype.float32, seed=None, name=None)
返回一个泊松分布随机tensor,lam是泊松分布的参数,可以使一个tensor或者是N-Darray。tf.random_poisson([0.5, 1.5], [10])的shape为[10, 2],其中[:, 0]服从lambda为0.5的泊松分布,[:, 1]服从lambda为1.5的泊松分布。
tf.parameterized_truncated_normal(shape, means=0.0, stddevs=1.0,
minvals=-2.0, maxvals=2.0, dtype=dtypes.float32, seed=None,name=None)能够指定最大值和最小值的truncated_normal