基础接口:用来生成随机数,可以指定均值和方差。
相比简单拿来用,调一下参数,生成数据并生成图形观察对比一下, 对于直观理解数据和神经网络训练还是有帮助的。
对比tf.random_normal,数据限制了范围,离群点更少,常用于神经网络参数初始化或者生成一些训练数据。
weights一般要接近0但是不是0,比较方便train,所以用truncated可能优于普通random。
如果是生成数字样本,数据更集中,训练收敛会比较快,但是过于规律的数据,可能不利于泛化(可以用其他手段预防过拟合)。
https://github.com/huqinwei/tensorflow_demo/api_demo/truncated_normal.ipynb
做了两者生成数据的对比并打印图形观察,mean=10,std=0.1,自适应的座标系,后者被牢牢的限制在了9.8-10.2
rotate_control
可以用来生成平均分布,配合tf.cond用来做if-else控制,
rotate_control = tf.random_uniform(shape=[1])
rotated_img_batch = tf.cond(rotate_control[0]>=0.0,lambda:tf.contrib.image.rotate(flipped_img_batch,rotate_angle[0],interpolation = 'BILINEAR'),lambda:flipped_img_batch)#interpolation: "NEAREST", "BILINEAR".