TensorFlow2.0教程-使用低级api训练(非tf.keras)

TensorFlow2.0教程-使用低级api训练(非tf.keras)

tensorflow2.0推荐使用tf.keras这样的高级api来构建网络,但tensorflow仍然保持了灵活的构造网络的低级api,我们这节就来介绍怎么通过使用这些低级api构建一个神经网络并训练。

原文地址:https://doit-space.blog.csdn.net/article/details/95040964

最全Tensorflow 2.0 入门教程持续更新:https://blog.csdn.net/qq_31456593/article/details/88606284

完整tensorflow2.0教程代码请看 https://github.com/czy36mengfei/tensorflow2_tutorials_chinese (欢迎star)

本教程主要由tensorflow2.0官方教程的个人学习复现笔记整理而来,中文讲解,方便喜欢阅读中文教程的朋友,官方教程:https://www.tensorflow.org

一、Variables

TensorFlow的张量是不可变的无状态对象。当我们有要改变的张量时,可以使用python的特性,把计算得到的值赋给这个python变量。

x = tf.ones([6,6])
x = x + 3 # x+3后得到了一个新的张量,并把这个张量赋给x
print(x)

tf.Tensor(
[[4. 4. 4. 4. 4. 4.]
 [4. 4. 4. 4. 4. 4.]
 [4. 4. 4. 4. 4. 4.]
 [4. 4. 4. 4. 4. 4.]
 [4. 4. 4. 4. 4. 4.]
 [4. 4. 4. 4. 4. 4.]], shape=(6, 6), dtype=float32)

然而机器学习中间需要变化的状态(每个参数朝损失变小的方向改变,所以TensorFlow也要内置有状态的操作,这就是Variables,它可以表示模型中的参数,而且方便高效。

Variables是一个存在值的对象,当其被使用是,它被隐式地被从存储中读取,而当有诸如tf.assign_sub, tf.scatter_update这样的操作时,得到的新值会储存到原对象中。

v = tf.Variable(2)
v.assign(6)
print(v)
v.assign_add(tf.square(3))
print(v)
<tf.Variable 'Variable:0' shape=() dtype=int32, numpy=6>
<tf.Variable 'Variable:0' shape=() dtype=int32, numpy=15>

注:梯度计算时会自动跟踪变量的计算(不用watch),对表示嵌入的变量,TensorFlow会默认使用稀疏更新,这样可以提高计算和存储效率。

二、示例:拟合线性模型

使用Tensor, Variable和GradientTap

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值