tensorflow常用函数

import tensorflow as tf

关于张量的维度

一维直接写数
二维用 [行数 , 列数]
多维用[n , m , j , k , ...]

生成张量的维数只需要看有多少层括号即可。

1.创建一个Tensor

# tf.constant(张量内容,dtype = 数据类型(可选))

tf.constant([1,5],dtype = tf.int64)

2.将 numpy 的数据类型转换成Tensor数据类型

# tf.convert_to_tensor(数据名,dtype=数据类型(可选))

a = np.arange(0,5)
b = tf.convert_to_tensor(a,dtype=tf.int64)

3.创建全为 0 的张量

tf.zeros(维度)

4.创建全为 1 的张量

tf.ones(维度)

5.创建全为指定值的张量

tf.fill(维度,指定值)

6.生成正态分布的随机数,缺省时均值为0,标准差为1

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

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

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

8.生成均匀分布的随机数

tf.random.uniform(维度,minval=最小值,maxval=最大值)

9.强制转换tensor数据类型

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

10.计算张量上的最小值

tf.reduce_min(张量名)

11.计算张量上的最大值

tf.reduce_max(张量名)

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

tf.Variable(初始值)

# eg.
w = tf.Variable(tf.random.normal([2,2],mean = 0,stddev = 1))

13.张量的数学运算:四则运算

# 加法
tf.add(张量1,张量2)
# 减法
tf.subtract(张量1,张量2)
# 乘法
tf.multiply(张量1,张量2)
#除法
tf.divide(张量1,张量2)

14.张量的数学计算:平方开方次方

# 平方
tf.square(张量名)
# 次方
tf.pow(张量名,次方数)
# 开方
tf.sqrt(张量名)

15.张量的数学计算:矩阵相乘,需要保证前一个张量的列数等于后一个张量的行数

tf.matmul(张量1,张量2)

16.切分传入张量的第一维度,生成输入特征/标签对,构建数据集,适应于numpy和tensor。

data = tf.data.Dataset.from_tensor_slices((特征,标签))
features = tf.constant([12,23,10,17])
labels = tf.constant([0,1,1,0])

dataSet = tf.data.Dataset.from_tensor_slices((features,labels))
print(dataSet)
for elem in dataSet:
    print(elem)

17.计算计算过程,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)
print(grad)
#输出结果
#tf.Tensor(6.0, shape=(), dtype=float32)

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

seq = ['one','two','three']
for i,elem in enumerate(seq):
    print(i,elem)
    
#结果:
#0 one
#1 two
#2 three

19.独热编码。在分类问题中,常常用独热码作为标签,例如在鸢尾花分类中,如果0表示狗为鸢尾,1表示杂色鸢尾,2表示弗吉尼亚鸢尾,则标签1用独热码表示为[0,1,0]

tf.one_hot(待传入数据,depth = 几分类)
classes = 3
labels = tf.constant([1, 0, 2])#输入元素的值最小为0,最大为2
output = tf.one_hot(labels,depth=classes)

print(output)

#输出结果
tf.Tensor(
[[0. 1. 0.]
 [1. 0. 0.]
 [0. 0. 1.]], shape=(3, 3), dtype=float32)

20.softmax函数:使输出符合概率分布,相当于计算以下函数:

Softmax(y_{i})=\frac{e^{y_{i}}}{\sum_{j=0}^{n}e^{y_{i}}}

tf.nn.softmax(x)
y = tf.constant([1.01,2.01,-0.66])
y_pro = tf.nn.softmax(y)
print("y_pro = ",y_pro)

#输出结果
y_pro =  tf.Tensor([0.25598174 0.69583046 0.04818781], shape=(3,), dtype=float32)

21.更新参数assign_sub:在调用该函数需要先调用tf.Variable定义变量位可训练(自更新)

w.assign.sub(w要自减的内容)
w = tf.Variable(4)
w.assign_sub(1) #等效于 w = w-1
print(w)
#运行结果
<tf.Variable 'Variable:0' shape=() dtype=int32, numpy=3>

22.tf.argmax返回张量沿指定维度最大的索引值

tf.argmax(张量名,axis=操作轴)#0为列,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))#返回每一列最大值的索引
print(tf.argmax(test,axis=1))#返回每一行最大值的索引

#运行结果
[[1 2 3]
 [2 3 4]
 [5 4 3]
 [8 7 2]]
tf.Tensor([3 3 1], shape=(3,), dtype=int64)
tf.Tensor([2 2 0 0], shape=(4,), dtype=int64)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值