看tf笔记,新学的tf中常用的函数,在此整理一下,留作复习用。
import tensorflow as tf
x = tf.constant([[1,2,3],[14,2,5]])
print(x)
print(tf.reduce_mean(x)) #不指定参数的话 就是求所有元素的平均值(1+2+3+14+2+5)/6=4
print(tf.reduce_mean(x,axis = 0)) #纵向求平均值 (1+14)/2=7 (2+2)/2=2 (3+5)/2=4
print(tf.reduce_mean(x,axis = 1)) #横向求平均值 (1+2+3)/3=2 (14+2+5)/3=7
print(tf.reduce_sum(x)) #不指定参数的话 就是求所有元素的和 1+2+3+14+2+5=27
print(tf.reduce_sum(x,axis=0)) #纵向求和
print(tf.reduce_sum(x,axis=1)) #横向求和
print(tf.reduce_max(x)) #求最大值 14
print(tf.reduce_min(x)) #求最小值 1
tf.constant(张量名,dtype = 数据类型) #创建指定类型的张量
如:x1 = tf.constant(x,dtype = tf.int32)
tf.convert_to_tensor(张量名,dtype = 数据类型) #将numpy()数据类型转换成tensor数据类型
tf.zeros(维度) #创建全为0的张量
tf.ones(维度) #创建全为1的张量
tf.fill(维度,指定值) #创建全为指定值的张量
tf.random.normal(维度,mean=均值,stddev=标准差) #生成正态分布的随机数,默认的均值是0,标准差是1
tf.random.truncated_normal(维度,mean=均值,stddev=标准差) #生成截断式正态分布的随机数
tf.random.uniform(维度,minval=最小值,maxval=最大值) #生成均匀分布随机数[minval,maxval)
tf.Variable() #可以将变量标记为"可训练"。
如:w = tf.Variable(tf.random.normal([2,2],mean = 0,stddev = 1))
#随机生成正态分布随机数,在把生成的随机数标记为可训练。
tf中的数学运算:
四则运算(+-*/):tf.add(张量1,张量2) tf.subtract(张量1,张量2) tf.multiply(张量1,张量2) tf.divide(张量1,张量2)
注意:只有维度相同的张量,才可以进行四则运算
平方,次方,开方:tf.square(张量名) tf.pow(张量名,n次方) tf.sqrt(张量名)
矩阵乘:tf.matmul(矩阵1,矩阵2)
将特征与标签配对:tf.data.Dataset.from_tensor_slices(features,labels)
如:featurs = tf.constant([12,4,6,3])
labels = tf.constant([0,1,1,0])
dataset = tf.data.Dataset.from_tensor_slices(featurs,labels)
print(dataset)
for element in dataset:
print(element)
tf.GradientTape()
with结构记录计算过程,gradient求出张量的梯度
with tf.GradientTape() as tape:
计算过程
grad = tape.gradient(损失函数,对谁求导)
如:
with tf.GradientTape() as tape:
w = tf.Variable(tf.constant(3.0))
loss = tf.pow(w,2) #loss = w²
grad = tape.gradient(loss,w)
print(grad)
enumerate(名称) 枚举 遍历每一个元素 常和for连用 组合为:索引 元素
如:seq = ['one','two','three']
for i,element in enumerate(seq):
print(i,element)
结果为: 0 one
1 two
2 three
tf.one_hot(待转换数据,depth = 几分类) 独热码 在分类问题中,常用独热码做标签,1表示是,0表示非
如:classes = 3
labels = tf.constant([1,0,2])
output = tf.one_hot(labels,classes)
print(output)
结果:
[[0.,1.,0.]
[1.,0.,0.]
[0.,0.,1.]
]
tf.nn.softmax(x) 可以使得N分类的N个输出,通过该函数,符合概率分布;即每个输出值都在0-1之间,且它们的和为1.
如:x = tf.constant([1.01,2.01,-0.66])
y_pro = tf.nn.softmax(x)
assign_sub(参数要自减的内容) 常用作参数的自更新
调用assign_sub函数前,需要用tf.Variable来定义变量为可训练,也就是可以自更新。
如:w = tf.Variable(4)
w.assign_sub(1) #即w -= 1,即w = w - 1
print(w) #结果为3
tf.argmax(张量名,axis = 0或者1) 返回张量沿指定维度最大/小值的索引,axis = 0 表示纵向,axis = 1 表示横向。
如:import numpy as np
test = np.array([[1,2,3],[2,3,4],[5,4,3],[8,7,2]])
print(test)
print(tf.argmax(test,axis=0)) #返回每一列的最大值的索引 [3,3,1]
print(tf.argmax(test,axis=1)) #返回每一行的最大值的索引 [2,2,0,0]