【TensorFlow】基础知识

张量的类型
在这里插入图片描述
**tf.Variable **: 变量 Tensor,需要指定初始值,常用于定义可变参数,例如神经网络的权重。
**tf.constant **: 常量 Tensor,需要指定初始值,定义不变化的张量。

import tensorflow as tf

v = tf.Variable([[1, 2], [3, 4]])  # 形状为 (2, 2) 的二维变量

c = tf.constant([[1, 2], [3, 4]])  # 形状为 (2, 2) 的二维常量

#输出张量的Numpy数组
c.numpy()

几个经常会用到的新建特殊常量张量的方法:

  • tf.zeros:新建指定形状且全为 0 的常量 Tensor
  • tf.zeros_like:参考某种形状,新建全为 0 的常量 Tensor
  • tf.ones:新建指定形状且全为 1 的常量 Tensor
  • tf.ones_like:参考某种形状,新建全为 1 的常量 Tensor
  • tf.fill:新建一个指定形状且全为某个标量值的常量 Tensor
 c= tf.zeros([3, 3])  # 3x3 全为 0 的常量 Tensor
 c
 '''
 <tf.Tensor: shape=(3, 3), dtype=float32, numpy=
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]], dtype=float32)>
 '''
d=tf.ones_like(c)  # 与 c 形状一致全为 1 的常量 Tensor
d
'''
<tf.Tensor: shape=(3, 3), dtype=float32, numpy=
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]], dtype=float32)>
'''
tf.fill([2, 3], 6)  # 2x3 全为 6 的常量 Tensor
'''
<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[6, 6, 6],
       [6, 6, 6]], dtype=int32)>
'''

tf.linspace(1.0, 10.0, 5, name="linspace") # 创建一些序列,创建一个等间隔序列。
"""
<tf.Tensor: shape=(5,), dtype=float32, numpy=array([ 1.  ,  3.25,  5.5 ,  7.75, 10.  ], dtype=float32)>
"""

tf.range(start=1, limit=10, delta=2)#创建一个数字序列。
"""
<tf.Tensor: shape=(5,), dtype=int32, numpy=array([1, 3, 5, 7, 9], dtype=int32)>
"""

张量的计算 Eager Execution

c
'''
<tf.Tensor: shape=(2, 2), dtype=int32, numpy=
array([[1, 2],
       [3, 4]], dtype=int32)>
'''

 # 加法计算
c + c 
'''
<tf.Tensor: shape=(2, 2), dtype=int32, numpy=
array([[2, 4],
       [6, 8]], dtype=int32)>
c
'''
 # 矩阵乘法
a = tf.constant([1., 2., 3., 4., 5., 6.], shape=[2, 3])
b = tf.constant([7., 8., 9., 10., 11., 12.], shape=[3, 2])
c = tf.linalg.matmul(a, b)  # 矩阵乘法
'''
<tf.Tensor: shape=(2, 2), dtype=float32, numpy=
array([[ 58.,  64.],
       [139., 154.]], dtype=float32)>
'''
tf.linalg.matrix_transpose(c)  # 转置矩阵
'''
<tf.Tensor: shape=(2, 2), dtype=int32, numpy=
array([[1, 3],
       [2, 4]], dtype=int32)>
'''

自动求导
TensorFlow 中,你可以使用 tf.GradientTape 跟踪全部运算过程,以便在必要的时候计算梯度:

w = tf.Variable([1.0])  # 新建张量

with tf.GradientTape() as tape:  # 追踪梯度
    loss = w * w
   
grad = tape.gradient(loss, w)  # 计算梯度
grad

tf.GradientTape 会像磁带一样记录下计算图中的梯度信息,然后使用 .gradient 即可回溯计算出任意梯度,这对于使用 TensorFlow 低阶 API 构建神经网络时更新参数非常重要。
常用的模块
官方文档:TensorFlow

  • tf.:包含了张量定义,变换等常用函数和类。
  • tf.data:输入数据处理模块,提供了像 tf.data.Dataset 等类用于封装输入数据,指定批量大小等。
  • tf.image:图像处理模块,提供了像图像裁剪,变换,编码,解码等类。
  • tf.keras:原 Keras 框架高阶 API。包含原 tf.layers 中高阶神经网络层。
  • tf.linalg:线性代数模块,提供了大量线性代数计算方法和类。
  • tf.losses:损失函数模块,用于方便神经网络定义损失函数。
  • tf.math:数学计算模块,提供了大量数学计算函数。
  • tf.saved_model:模型保存模块,可用于模型的保存和恢复。
  • tf.train:提供用于训练的组件,例如优化器,学习率衰减策略等。
  • tf.nn:提供用于构建神经网络的底层函数,以帮助实现深度神经网络各类功能层。
  • tf.estimator:高阶 API,提供了预创建的 Estimator 或自定义组件。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值