网站免备案,个人简历网页制作教程,win7安装wordpress,wordpress登录访问低阶张量操作是所有现代机器学习的底层架构#xff0c;可以转化为TensorFlow API。
张量#xff0c;包括存储神经网络状态的特殊张量#xff08;变量#xff09;。 张量运算#xff0c;比如加法、relu、matmul。 反向传播#xff0c;一种计算数学表达式梯度的方法可以转化为TensorFlow API。
张量包括存储神经网络状态的特殊张量变量。 张量运算比如加法、relu、matmul。 反向传播一种计算数学表达式梯度的方法在TensorFlow中通过GradientTape对象来实现。
然后是高阶深度学习概念。这可以转化为Keras API。
层多层可以构成模型。 损失函数它定义了用于学习的反馈信号。必须是可微的 优化器它决定学习过程如何进行。 评估模型性能的指标比如精度。 训练循环执行小批量梯度随机下降。
常数张量和变量
要使用TensorFlow我们需要用到一些张量。创建张量需要给定初始值。例如可以创建全1张量或全0张量见代码清单3-1也可以从随机分布中取值来创建张量见代码清单3-2。
代码清单3-1 全1张量或全0张量
import tensorflow as tf
x tf.ones(shape(2, 1))
#←----等同于np.ones(shape(2, 1))
print(x)
x tf.zeros(shape(2, 1))
#←----等同于np.zeros(shape(2, 1))
print(x)
代码清单3-2 随机张量
x tf.random.normal(shape(3, 1), mean0., stddev1.)
#←----从均值为0、标准差为1的正态分布中抽取的随机张量等同于np.random.normal(size(3, 1), loc0., scale1.)
# mean的中文含义就是均值print(x)x tf.random.uniform(shape(3, 1), minval0., maxval1.)
#←----从0和1之间的均匀分布中抽取的随机张量等同于np.random.uniform(size(3, 1), low0., high1.)
print(x)
NumPy数组和TensorFlow张量之间的一个重要区别是TensorFlow张量是不可赋值的它是常量。举例来说在NumPy中你可以执行以下操作如代码清单3-3所示。
代码清单3-3 NumPy数组是可赋值的
import numpy as np
x np.ones(shape(2, 2))
x[0, 0] 0.如果在TensorFlow中执行同样的操作如代码清单3-4所示那么程序会报错EagerTensor object does not support item assignmentEagerTensor对象不支持对元素进行赋值。
代码清单3-4 TensorFlow张量是不可赋值的
x tf.ones(shape(2, 2)) ←----程序会报错因为张量是不可赋值的
x[0, 0] 0.要训练模型我们需要更新其状态而模型状态是一组张量。如果张量不可赋值那么我们该怎么做呢这时就需要用到变量variable。tf.Variable是一个类其作用是管理TensorFlow中的可变状态。要创建一个变量你需要为其提供初始值比如随机张量如代码清单3-5所示。 v tf.Variable(initial_valuetf.random.normal(shape(3, 1)))print(v)
array([[-0.75133973],[-0.4872893 ],[ 1.6626885 ]], dtypefloat32)变量的状态可以通过其assign方法进行修改如代码清单3-6所示。
代码清单3-6 为TensorFlow变量赋值 v.assign(tf.ones((3, 1)))
array([[1.],[1.],[1.]], dtypefloat32)这种方法也适用于变量的子集如代码清单3-7所示。
代码清单3-7 为TensorFlow变量的子集赋值 v[0, 0].assign(3.)
array([[3.],[1.],[1.]], dtypefloat32)与此类似assign_add()和assign_sub()分别等同于和-的效果如代码清单3-8所示。
代码清单3-8 使用assign_add() v.assign_add(tf.ones((3, 1)))
array([[2.],[2.],[2.]], dtypefloat32)就像NumPy一样TensorFlow提供了许多张量运算来表达数学公式。我们来看几个例子如代码清单3-9所示。
代码清单3-9 一些基本的数学运算
a tf.ones((2, 2))
b tf.square(a) ←----求平方
c tf.sqrt(a) ←----求平方根
d b c ←----两个张量逐元素相加
e tf.matmul(a, b) ←----计算两个张量的积详见第2章
e * d ←----两个张量逐元素相乘重要的是代码清单3-9中的每一个运算都是即刻执行的任何时候都可以打印出当前结果就像在NumPy中一样。我们称这种情况为急切执行eager execution。
本文可运行全部代码集合大家可以直接在装了tensorflow的python3环境下运行。
import tensorflow as tf
x tf.ones(shape(2, 1))
#←----等同于np.ones(shape(2, 1))
print(x)
x tf.zeros(shape(2, 1))
#←----等同于np.zeros(shape(2, 1))
print(x)x tf.random.normal(shape(3, 1), mean0., stddev1.)
#←----从均值为0、标准差为1的正态分布中抽取的随机张量等同于np.random.normal(size(3, 1), loc0., scale1.)
# mean的中文含义就是均值print(x)x tf.random.uniform(shape(3, 1), minval0., maxval1.)
#←----从0和1之间的均匀分布中抽取的随机张量等同于np.random.uniform(size(3, 1), low0., high1.)
print(x)import numpy as np
x np.ones(shape(2, 2))
x[0, 0] 0.print(x)v tf.Variable(initial_valuetf.random.normal(shape(3, 1)))
print(v)v.assign(tf.ones((3, 1)))
print(v)v[0, 0].assign(3.)
print(v)v.assign_add(tf.ones((3, 1)))
print(v)