tensorflow计算常用函数

tensorflow计算常用函数

1 张量生成

1.1 创建一个张量

tf.constant(维度,数据类型)

例如:a = tf.constant([1, 5],dtype = tf.int64)

1.2 创建一个全为0的张量

tf.zero(维度)

例如:tf.zero([2,3])

1.3 创建一个全为1的张量

tf.ones(维度)

例如:tf.ones([2,3])

1.4 创建一个全为指定值的张量

tf.fill(维度,指定值)

例如:tf.fill([2,2],9)

1.5 生成正态分布的随机数,默认均值为0,标准差为1

tf.random.normal(维度,mean=均值,stddev=标准差)

例如:tf.random.normal([2,2],mean=0.5,stddev=1)

1.6 生成截断式正态分布的随机数

tf.random.truncated_normal(维度,mean=均值,stddev=标准差)

例如:tf.random.normal([2,2],mean=0.5,stddev=1)

需要注意的是截断式正态分布产生的随机数取值在$ (\mu - 2\sigma,\mu + 2\sigma) $之间,也就是说,截断式正态分布生成的随机数据更加集中

2 常用函数

2.1 强制tensor转换为该数据类型

tf.cast(张量名,dtype=数据类型)

2.2 计算张量维度上元素的最小值

tf.reduce_min(张量名)

2.3 计算张量维度上元素的最大值

tf.reduce_max(张量名)

2.4 计算张量沿指定维度的平均值

tf.reduce_mean(张量名,axis=操作轴)

当不指定维度时,对所有元素进行操作

2.5 计算张量沿指定维度的和

tf.reduce.sun(张量名,axis=操作轴)

2.6 tf.Variable()函数

tf.Variable()将变量标记为可训练,被标记的变量会在反向传播中记录梯度信息。神经网络训练中,常用该函数标记待训练参数。

tf.Variable(初始值)

例如:w = tf.Variable(tf.random.normal([2,2],mean=0,stddev=1))

2.7 TensorFlow中的数学运算

对应元素的四则运算:tf.add, tf.subtract, tf.multiply, tf.divide

平方、次方和开方:tf.suqre, tf.pow, tf.sqrt

矩阵乘:tf.matmul

注意:只有维度相同张量才能进行四则运算,和矩阵运算一样

2.8 tf.data.Dataset.from_tensor_slices

切分传入张量的第一维度,生成输入特征/标签对,构建数据集

用法:data = tf.data.Dataset.from_tensor_slices((输入特征,标签))

注意:Numpy和Tensor格式都可用该语句读入数据

例如:

feature = tf.constant([12,23,10,17])
labels = tf.constant([0,1,1,0])
dataset = tf.data.Dataset.from_tensor_slices((feature,labels))

2.9 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)
grad = tape.gradient(loss,w)

2.10 enumerate

enumerate是python的内建函数,它可遍历每个元素(如列表、元组或字符串),组合为:索引 元素,常在for循环中使用。

enumerate(列表名)
seq = ['one', 'two', 'three']
for i,element in emumerate(seq):
	print(i,element)

2.11 tf.one_hot

独热编码(one-hot encoding):在分类问题中,常用独热码做标签,

标记类别:1表示是,0表示非。

例如在鸢尾花数据集中,假设标签为1,则独热码为(0, 1, 0),这样可以表示出标签的概率。

tf.one_hot函数可以将待转换数据转换为One-hot形式的数据输出。

用法为:tf.one_hot(待转换数据,depth=几分类)

例如:

classes = 3
labels = tf.constant([1,0,2])
output = tf.one_hot(labels, depth=classes)

# 运行结果为
[[0. 1. 0.]
 [1. 0. 0.]
 [0. 0. 1.]]

2.12 tf.nn.softmax()

tf.nn.softmax()函数使得前向传播的输出符合概率分布,常与独热码一起使用。

2.13 assign_sub()

赋值操作,更新参数的值并返回,也就是自减操作,可以配合梯度下降法来更新参数。

调用assign_sub前,先用tf.Variable函数定义变量为可训练

2.14 tf.argmax()

返回张量沿指定维度最大值的索引tf.argmax(张量名,axis=操作轴)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值