类型:
list,np.array,tf.Tensor,其中np.array与Tensor相似,但存在问题:没有很好的GPU加成,没有自动求导
scalar:1.1 dim=0
vec: [1.1] dim =1
matrix:[[1.1,2.2]] dim = 2
tensor:rank>2 ,一般来说>0就行,有时候scalar也属于tensor。
使用gpu和使用cpu:
with tf.device('gpu'): #s使用gpu
b=tf.range(4)
print(b.device)
c=b.cpu()
print(c.device)
print(c.numpy)#numpy cpu
print(c.shape)
print(c.ndim) #维度
print(tf.rank(c))
查看c的信息:
判断是否为tensor类型:
#判断是否为tensor
a = tf.constant([1.])
b = np.array(4)
s=isinstance(a,tf.Tensor)
print(s)
s1=isinstance(b,tf.Tensor)
print(s1)
print(a.dtype) #具体类型
类型的转化:
#类型相互转换
a = np.array(5)
print(a.dtype)
aa = tf.convert_to_tensor(a,dtype=tf.int32)#转化为tensor dtype 指定转化类型
#数据类型转化一般用cast
aaa = tf.cast(aa,dtype=tf.double)
#布尔和整形也可以转化
#转化为Varible,具有求导的特性
w = tf.Variable(a)
w.name
w.trainable #需要梯度信息
# int(tensor)
初始化问题:
#初始化为0
tf.zeros([])
#理解为shape
a = tf.zeros([2,3,3])
tf.zeros_like(a)
#tf.zero(a.shape)
#shape = (2,3,3)
#tf.zeros a.shape功能相似
#初始化为1
tf.ones()
#初始化为9(可自定义)
tf.fill([2,2],9)
#随机初始化
tf.random.normal([2,2],mean=1,stddev=1)
#mean 均值 stddev 方差
#不指定 正态为0的
tf.random.truncated_normal() #截断 梯度为0--梯度消逝 性能更好
zeros--初始化为0,ones--初始化为1,fill--自定义初始化,random.normal随机初始化
分布问题:
#均匀分布
tf.random.uniform([2,2],minval=0,maxval=1)
#随机打散
idx = tf.range(10)
idx = tf.random.shuffle(idx)
a = tf.random.normal([10,784])
b = tf.random.uniform([10],maxval=10,dtype=tf.int32)
a = tf.gather(a,idx) #相同的idx
b = tf.gather(b,idx)
这个是简化求和的方法:
loss = tf.keras.losses.mes() #(y-out)的和
Dim = 3 更多的是处理自然语言
Dim = 4 更多的是图片
DIm = 5 多任务处理