写点什么

TensorFlow 的常用函数

作者:Peter
  • 2022 年 4 月 09 日
  • 本文字数:1711 字

    阅读完需:约 6 分钟

TensorFlow的常用函数

公众号:尤而小屋

作者:Peter

编辑:Peter


大家好,我是 Peter~


本文记录的是 TensorFlow 中常用的函数


  • tf.cast:强制数据类型转换

  • tf.reduct_mean/sum:求和或均值

  • tf.reduce_max/min:求最值

  • tf.Variable:标记变量

  • 四则运算相关函数

  • tf.data.Dataset.from_tensor_slices:特征和标签配对



import tensorflow as tfimport numpy as np
复制代码

理解 axis

在一个二维张量或者数组中,通过改变 axis=0 或 1 来控制执行的维度


  • 0:表示经度,跨行,down

  • 1:表示纬度,跨列,across


如果不指定的话,则全员参与计算


tf.cast

强制 tensor 转换为该数据类型


tf.cast(张量名, dtype=数据类型)
复制代码


In [2]:


x1 = tf.constant([1,2,3],dtype=tf.float64)x1
复制代码


Out[2]:


<tf.Tensor: shape=(3,), dtype=float64, numpy=array([1., 2., 3.])>
复制代码


In [3]:


x2 = tf.cast(x1, dtype=tf.int64)  # 转换数据类型x2
复制代码


Out[3]:


<tf.Tensor: shape=(3,), dtype=int64, numpy=array([1, 2, 3])>
复制代码

tf.reduce_max/min

计算张量维度上的最值


In [4]:


print(tf.reduce_max(x2))tf.Tensor(3, shape=(), dtype=int64)
复制代码


In [5]:


print(tf.reduce_min(x2))tf.Tensor(1, shape=(), dtype=int64)
复制代码

tf.reduct_mean/sum

计算张量沿着指定维度的平均值或者和


In [6]:


i = tf.constant([[1,2,3],                 [4,5,6]                ],dtype=tf.float64)i
复制代码


Out[6]:


<tf.Tensor: shape=(2, 3), dtype=float64, numpy=array([[1., 2., 3.],       [4., 5., 6.]])>
复制代码


In [7]:


tf.reduce_mean(i)  # 默认是全部数值的均值
复制代码


Out[7]:


<tf.Tensor: shape=(), dtype=float64, numpy=3.5>
复制代码


In [8]:


tf.reduce_mean(i, axis=0)
复制代码


Out[8]:


<tf.Tensor: shape=(3,), dtype=float64, numpy=array([2.5, 3.5, 4.5])>
复制代码


In [9]:


tf.reduce_mean(i, axis=1)
复制代码


Out[9]:


<tf.Tensor: shape=(2,), dtype=float64, numpy=array([2., 5.])>
复制代码


In [10]:


tf.reduce_sum(i)  # 1+2+3+4+5+6
复制代码


Out[10]:


<tf.Tensor: shape=(), dtype=float64, numpy=21.0>
复制代码


In [11]:


tf.reduce_sum(i, axis=0)
复制代码


Out[11]:


<tf.Tensor: shape=(3,), dtype=float64, numpy=array([5., 7., 9.])>
复制代码


In [12]:


tf.reduce_sum(i, axis=1)
复制代码


Out[12]:


<tf.Tensor: shape=(2,), dtype=float64, numpy=array([ 6., 15.])>
复制代码

tf.Variable

tf.Variable()将函数标记为可训练,被标记的变量会在反向传播中记录梯度信息。


神经网络中常用该函数来标记待训练的参数。


In [13]:


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


Out[13]:


<tf.Variable 'Variable:0' shape=(2, 2) dtype=float32, numpy=array([[-1.3200597 ,  1.123157  ],       [ 0.4855043 , -0.06241844]], dtype=float32)>
复制代码


上面变量 w 的解释:


  1. 先生成正态分布的随机数

  2. 再将随机数标记为可训练,这样在神经网络的反向传播中就可以通过梯度下降更新参数 w 了

数学运算

  • 四则运算:tf.add(t1,t2)、tf.subtract、tf.multiply、tf.divide

  • 平方、次方与开方:tf.square、tf.pow(t,n 次方)、tf.sqrt

  • 矩阵乘:tf.matmul


注意:只有维度相同的两个张量才能进行四则运算

tf.data.Dataset.from_tensor_slices

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


Numpy 和 Tensor 格式都可以使用该语句读入数据


data = tf.data.Dataset.from_tensor_slices((输入特征,标签))
复制代码


In [14]:


features = tf.constant([12,15,20,27])labels = tf.constant([0,1,0,1])
dataset = tf.data.Dataset.from_tensor_slices((features,labels))print(dataset)<TensorSliceDataset element_spec=(TensorSpec(shape=(), dtype=tf.int32, name=None), TensorSpec(shape=(), dtype=tf.int32, name=None))>
复制代码


In [15]:


for element in dataset:    print(element)(<tf.Tensor: shape=(), dtype=int32, numpy=12>, <tf.Tensor: shape=(), dtype=int32, numpy=0>)(<tf.Tensor: shape=(), dtype=int32, numpy=15>, <tf.Tensor: shape=(), dtype=int32, numpy=1>)(<tf.Tensor: shape=(), dtype=int32, numpy=20>, <tf.Tensor: shape=(), dtype=int32, numpy=0>)(<tf.Tensor: shape=(), dtype=int32, numpy=27>, <tf.Tensor: shape=(), dtype=int32, numpy=1>)
复制代码

视频号开通

视频号主要是分享相关文章的源码,欢迎关注

发布于: 刚刚阅读数: 3
用户头像

Peter

关注

志之所趋,无远弗届,穷山距海,不能限也。 2019.01.15 加入

还未添加个人简介

评论

发布
暂无评论
TensorFlow的常用函数_人工智能_Peter_InfoQ写作平台