TensorFlow笔记学习(一)
这是我的第一篇笔记,主要是对于个人每日学习内容的一个记录
人工智能实践:Tensorflow笔记
对应视频第一讲第1.5小节
1.tf.GradientTape
这个函数可以自动地追踪with结构内所有可变张量的变化,也就是我们再反向传播过程中,需要对每个可变量进行一个求导,这个动作构成了误差梯度下降的过程
with tf.GradientTape() as Tape:
w=tf.Variable(tf.constant(3.0))
loss=tf.pow(w,2)
grad=Tape.gradient(loss,w)
print(grad)
运行结果: tf.Tensor(6.0, shape=(), dtype=float32)
我们的损失函数为 所以对于当
的时候我们的进行一次求导,它的结果就是
这里接入一点如何用markdown打出分数,分数的英文名字是fraction,
在markdown中用\frac{分子}{分母}的打出一个分数,所有的公式都用?包裹起来,其中??独行公式,微分运算的标识为\partial,其中partial differential为偏微分的意思
2.tf.one_hot
表示独热码,它就是把输出的结果进行一个编码,变成一个类似于二进制数的形式,比如,要输出的分类为a,b,c 那么就用[1,0,0]表示a [0,1,0]表示b,这就是独热码的含义,参数depth表示几分类
classes=3
labels=tf.constant([1,0,2]) #输入的元素最小值为0,最大值为2
output=tf.one_hot(labels,depth=3)
print(output)
运行结果:
tf.Tensor(
[[0. 1. 0.]
[1. 0. 0.]
[0. 0. 1.]], shape=(3, 3), dtype=float32)
3. tf.nn.softmax
它可以把网络的输出变得符合一个概率分布,只有符合了概率分布才可以把输出的结果和独热码进行一个比较
由此可见,softmax就是把所有的值重新映射到上,似的所有的输出可以符合一个概率分布
y=tf.constant([1.01,2.01,-0.66])
y_pro=tf.nn.softmax(y)
print("After softmax,y_pro is",y_pro)
运行结果:
After softmax,y_pro is tf.Tensor([0.25598174 0.69583046 0.04818781], shape=(3,), dtype=float32)
<tf.Variable 'Variable:0' shape=() dtype=int32, numpy=3>
4.assign_sub
用于实现参数的自更新,但是只能操作tf.Variable的数据
w=tf.Variable(4)
w.assign_sub(1)
print(w)
运行结果:
<tf.Variable 'Variable:0' shape=() dtype=int32, numpy=3>
5.tf.argmax
返回指定操作轴的最大值的索引,其中参数axis为轴,对于一个数组来说,如果axis=0,则在每一列上操作,如果axis=1,则在每一行上进行操作
#argmax axis是轴
test=np.array([[1,2,3],[2,3,4],[5,4,3],[8,7,2]])
print(test)
print(tf.argmax(test,axis=0)) #返回每一列的最大值索引
print(tf.argmax(test,axis=1)) #返回每一行的最大值索引
运行结果:
[[1 2 3]
[2 3 4]
[5 4 3]
[8 7 2]]
tf.Tensor([3 3 1], shape=(3,), dtype=int64)
tf.Tensor([2 2 0 0], shape=(4,), dtype=int64)