【入门教程】TensorFlow 2.0 基础:张量、自动求导与优化器

本文是 TensorFlow 2.0 入门教程,介绍了 Eager Execution 模式下张量的定义和操作,自动求导机制,以及优化器的使用。通过线性回归的例子展示了如何利用梯度下降法进行参数更新。
摘要由CSDN通过智能技术生成

图片

本文节选自由谷歌开发者专家(GDE)李锡涵@snowkylin 编写、广受好评的开源 TensorFlow 入门教程——《简单粗暴TensorFlow 2》。在《【必看】TensorFlow 2 官方安装指南》里,我们为大家详细介绍了 TensorFlow 2.0 的安装方式。在本篇文章,我们将带大家初窥 TensorFlow 2.0。

TensorFlow 2.0 最激动人心的特性之一,在于其引入的 Eager Execution 模式。这使得我们无需构建计算图后再执行计算,而可以做到直观的 “一经调用,立即执行”,从而让我们能够更为方便的构建和调试模型。在本文中,我们即使用 Eager Execution 模式为大家介绍 TensorFlow 的基础操作,包括张量的定义和操作、自动求导机制以及优化器的使用。

文 /  李锡涵,Google Developers Expert

本文节选自《简单粗暴 TensorFlow 2.0》

 

 

TensorFlow 1+1

我们可以先简单地将 TensorFlow 视为一个科学计算库(类似于 Python 下的 NumPy)。

首先,我们导入 TensorFlow:

1import tensorflow as tf

警告

在 TensorFlow 1.X 版本中, 必须在导入 TensorFlow 库后调用 tf.enable_eager_execution()函数以启用 Eager Execution 模式。在 TensorFlow 2.0 版本中,Eager Execution 模式为默认模式,无需额外调用 tf.enable_eager_execution()函数(不过若要关闭 Eager Execution,则需调用 tf.compat.v1.disable_eager_execution()函数)。

TensorFlow 使用 张量(Tensor)作为数据的基本单位。TensorFlow 的张量在概念上类似于多维数组,我们可以使用它来描述数学中的标量(0 维数组)、向量(1 维数组)、矩阵(2 维数组)等各种量,示例如下:

1# 定义一个随机数(标量)
2random_float = tf.random.uniform(shape=())
3
4# 定义一个有2个元素的零向量
5zero_vector = tf.zeros(shape=(2))
6
7# 定义两个2×2的常量矩阵
8A = tf.constant([[1., 2.], [3., 4.]])
9B = tf.constant([[5., 6.], [7., 8.]])

张量的重要属性是其形状、类型和值。可以通过张量的 shapedtype 属性和 numpy()方法获得。例如:

1# 查看矩阵A的形状、类型和值
2print(A.shape)      # 输出(2, 2),即矩阵的长和宽均为2
3print(A.dtype)      # 输出<dtype: 'float32'>
4print(A.numpy())    # 输出[[1. 2.]
5                    #      [3. 4.]]

小技巧

TensorFlow 的大多数 API 函数会根据输入的值自动推断张量中元素的类型(一般默认为 tf.float32)。不过你也可以通过加入 dtype 参数来自行指定类型,例如 zero_vector = tf.zeros(shape=(2), dtype=tf.int32)将使得张量中的元素类型均为整数。张量的 numpy()方法是将张量的值转换为一个 NumPy 数组。

TensorFlow 里有大量的 操作 (Operation),使得我们可以将已有的张量进行运算后得到新的张量。示例如下:

1C = tf.add(A, B)    # 计算矩阵A和B的和
2D = tf.matmul(A, B) # 计算矩阵A和B的乘积

操作完成后,和 的值分别为:

1tf.Tensor(
2[[ 6.  8.]
3 [10. 12.]], shape=(2, 2), dtype=float32)
4tf.Tensor(
5[[19. 22.]
6 [43. 50.]], shape=(2, 2), dtype=float32)

可见,我们成功使用 tf.add()操作计算出 图片,使用 tf.matmul()操作计算出:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值