ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

tensorflow2常用函数解析

2021-09-25 16:05:18  阅读:205  来源: 互联网

标签:tensorflow2 函数 张量 Variable 维度 tf 解析 axis


1.常用函数

  • 强制tensor转换为该数据类型:tf.cast(张量名,dtype=数据类型)
  • 计算张量维度上元素的最小值:tf.reduce_min(张量名)
  • 计算张量维度上元素的最大值:tf.reduce_max(张量名)

 2.理解axis

在一个二维张量或者数组中,可以通过调整axis等于0或者1控制执行维度。axis=0表示纵向操作,axis=1代表横向操作。

  • 计算张量沿着指定维度的平均值:tf.reduce_mean(张量名,axis=操作轴)
  • 计算张量沿着指定维度的和:tf.reduce_sum(张量名,axis=操作轴)

 3.常用函数

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

例如神经网络初始w,首先生成正态分布的随机数,然后把随机数标记为可训练的。如下所示:

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

4.TensorFlow提供的常用数学运算函数

  • 对应元素的四则运算

实现两个张量的对应元素相加:tf.add(张量1,张量2)

实现两个张量的对应元素相减:tf.add(张量1,张量2)

实现两个张量对应元素相乘:tf.multiply(张量1,张量2)

实现两个张量对应的元素相除:tf.divide(张量1,张量2)

注:只有维度相同的张量才可以做四则运算。

  • 平方、次方与开方

计算某个张量的平方:tf.square(张量名)

计算某个张量的n次方:tf.pow(张量名,n次方数)

计算某个张量的开方:tf.sqrt(张量名)

  • 两个矩阵相乘:tf.matmul(矩阵1,矩阵2)

5.tf.data.Dataset.from_tensor_slices

 神经网络训练的时候需要把输入特征和标签配对后放入网络的。TensorFlow给出了特征和标签配对的函数tf.data.Dataset.from_tensor_slices。这个函数不管是numpy格式还是tensor格式都适用。

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

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

 6.tf.GradientTape

在with结构中适用tf.GradientTape实现某个函数对指定参数的求导运算。配合tf.Variable使得参数可以训练。

with结构记录计算过程,gradient求出张量的梯度。

with tf.GradientTape() as tape:

        若干个计算过程

grad = tape.gradient(函数,对谁求导) 

 7.enumerate

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

enumerate(列表名)

 8.tf.one_hot

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

标记类别;1表示是,0表示非

(0狗尾草鸢尾      1杂色鸢尾       2弗吉尼亚鸢尾)

标签:1

独热码:(0      1        0)

tensorflow中提供了tf.one_hot()函数,将待转换数据,转换为one_hot形式的数据输出

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

9.tf.nn.softmax 

 10.assign_sub

该函数常用于函数的自更新,等待更新的参数要先被制定为可训练即为Variable类型。

  • 赋值操作,更新参数的值并返回
  • 调用assign_sub前,先用tf.Variable定义变量w为可训练(可自更新)

w.assign_sub(w要自更新的内容)

w做自减一操作,由4变为3。

11.tf.argmax

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

 

 

 

 

 

标签:tensorflow2,函数,张量,Variable,维度,tf,解析,axis
来源: https://blog.csdn.net/bigData1994pb/article/details/120463717

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有