Declaring Tensors
Tensor是computational graph的基本数据结构,下面对一些基本操作进行练习
1.定义一些 fixed number tensor
最简单的定义是用constant来实现,将普通的数据装换成tensor
假如我们需要固定值的tensor,比如全都是0或者都是1的,可以使用fill(dims,value,name=None)来实现
2. Tensors of similar shape
在numpy中经常会利用已经定义好的矩阵来定义一个新的矩阵(只是shape相同),在tensorflow中也有相似的操作.这里特别要注意的是加入我们想要同时运算a,b,c不应该是
with tf.Session() as sess:
print(sess.run(a,b,c))
tf要求对于多个tensor输入,应该是用列表的形式
3. Sequence tensors
我们可以定义一些都固定间隔的tensor,就好像range或者是numpy.inespace一样
这里需要注意的是起始和终点数必须是浮点数,num表示一共返回几个数(num必须为整数)。还要注意的是返回的列表首尾必定是start和stop.
tf.range函数和上面的函数非常的相似,唯一的不同就是定义的终止位不包含于返回值中.这里limit代表终止数,delta代表间隔。返回的值不包含limit,和python自带的range一样
4. Random tensors
random_uniform函数返回包括下线(minval)不包括上限(maxval)的列表,其中的数服从均匀分布
当然,我们初始化的时候更可能以正态分布抽取
假如我们不希望抽取的数离均值太远,那么我们可以用truncated_normal函数,它功能和上面的一样,但是假如抽取的数离mean大于两倍stddev的话将会被丢弃,重新抽取
tf.random_shuffle:比如我们的输入x是每一种动物的图片(N*D),但是每一类的图片都连续的存储,这样我们在抽取batch的时候就比较的麻烦。这个函数可以在第一维度搅乱顺序(注意只是第一维度!!!)
tf.random_crop:在数据增强中,经常有随机截取原图片来形成新的图片用来增广数据集。可以用这个函数实现
值得注意的是,random矩阵似乎是在运行sess的时候抽取值的,当我们run两次random矩阵的时候,结果是不一样的
结语:
上面的初始化定值tensor可以用来初始化变量,当然也可以用来运算
网友评论