TensorFlow01:张量

张量的形状:

标量---1个数字---0阶张量
向量---1维数组---1阶张量
矩阵---2维数组---2阶张量
张量---n维数组---n阶张量

张量操作:

tf.zeros(shape,dype=tf.float,name=None)    #全零张量  tf.ones()是全1张量
tf.zeros_like(tensor,dtype=None,name=None) #创建相同类型,相同形状的张量
tf.fill(shape,value,name=None)    #填充指定标量的张量
tf.constant(value,dtype=None,shape=None,name=None)   #创建一个常数张量
tf.truncated_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)#所有数字不超过两个标准差
tf.random_normal(shape,mean=0.0,stddv=1.0,dtype=tf.float32,seed,name=None)#随机正态分布的数字组成的矩阵
tf.cast(tensor,dtype)   #不会改变原始的tensor,返回新的改变类型后的tensor
tensor.get_shape()    # 获取tensor形状
tensor.set_shape(shape) #改变静态形状(形状没有固定下来?号的形状),不能跨阶
tf.reshape(tensor,shape)#改变动态形状(张量的元素个数必须匹配),返回新的tensor
tf.transpose(depth_major,[1,2,0]).eval()    # [c,h,w]  转换 [h,w,c]

 

代码实现1:创建张量

import tensorflow as tf
zeros = tf.zeros([2, 3], name="zeros")
ones = tf.ones_like(zeros,name ="ones")
fill = tf.fill([2,3],5,name="fill")
truncated = tf.truncated_normal([2,3],mean=1)
random = tf.random_normal([2,3],name="random")
with tf.Session() as sess:
    zeros_,ones_,fill_,truncated_,random_ = sess.run([zeros,ones,fill,truncated,random])
    print("zeros_:", zeros_)
    print("ones_:", ones_)
    print("fill_:", fill_)
    print("truncated_:", truncated_)
    print("random_:", random_)

运行结果:

zeros_: [[0. 0. 0.]
 [0. 0. 0.]]
ones_: [[1. 1. 1.]
 [1. 1. 1.]]
fill_: [[5 5 5]
 [5 5 5]]
truncated_: [[1.5404339  0.6582792  0.87537754]
 [0.9082955  1.3467028  0.6821146 ]]
random_: [[-0.02499405  0.27754402 -0.47137412]
 [ 0.7734614  -1.1405578  -0.14125896]]

代码实现2:形状操作

import tensorflow as tf
a = tf.placeholder(dtype=tf.float32,shape=[None, None])
b = tf.placeholder(dtype=tf.float32,shape=[None, 10])
c = tf.placeholder(dtype=tf.float16, shape=[3, 2])
print(a.get_shape())
print(b.get_shape())
print(c.get_shape())
a.set_shape([2, 3])
print("set_shape:", a.get_shape())
b.set_shape([2, 10])
print("set_shape:", b.get_shape())
c = tf.transpose(c, [1, 0])
print("transpose:", c.get_shape())
c = tf.reshape(c, [1, 6])
print("reshape:", c.get_shape())

运行结果:

(?, ?)
(?, 10)
(3, 2)
set_shape: (2, 3)
set_shape: (2, 10)
transpose: (2, 3)
reshape: (1, 6)

 

tf.zeros(shape,dype=tf.float,name=None)    #全零张量  tf.ones()是全1张量

tf.zeros_like(tensor,dtype=None,name=None) #创建相同类型,相同形状的张量

tf.fill(shape,value,name=None)    #填充指定标量的张量

tf.constant(value,dtype=None,shape=None,name=None)   #创建一个常数张量

tf.truncated_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None)#所有数字不超过两个标准差

tf.random_normal(shape,mean=0.0,stddv=1.0,dtype=tf.float32,seed,name=None)#随机正态分布的数字组成的矩阵

tf.cast(tensor,dtype)   #不会改变原始的tensor,返回新的改变类型后的tensor

tensor.get_shape()    # 获取tensor形状

tensor.set_shape(shape) #改变静态形状(形状没有固定下来?号的形状),不能跨阶

tf.reshape(tensor,shape)#改变动态形状(张量的元素个数必须匹配),返回新的tensor

tf.transpose(depth_major,[1,2,0]).eval()    # [c,h,w]  转换 [h,w,c]

代码实现1:创建张量

猜你喜欢

转载自www.cnblogs.com/jumpkin1122/p/11521022.html