TensorFlow2.0学习笔记1.3:函数基础讲解三

我们可以在with结构中使用tf.GradientTape()函数 实现某个函数对指定参数的求导运算
在这里插入图片描述配合刚才讲过的variable函数,可以实现损失函数loss对参数w的求导运算

import tensorflow as tf

with tf.GradientTape() as tape:
    w = tf.Variable(tf.constant(3.0))
    loss = tf.pow(w, 2)
grad = tape.gradient(loss, w)
print(grad)

在这个例子中,w的初始值为3.0,损失函数是w的平方,损失函数对w求导数是2w,把初始值w=3.0带入结果是6.0
在这里插入图片描述
enumerate是枚举的意思,它可以枚举出每一个元素,并在元素前配上对应的索引号,组合为索引元素,常在for循环中使用
在这里插入图片描述

seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
    print(i, element)

在这个例子中 enumerate括号里是列表名,i接受索引号,element接受元素
在这里插入图片描述
索引号0对应字符串one
索引号1对应字符串two
索引号2对应字符串three

在分类问题时,我们常用独热码表示标签.比如之前的鸢尾花分类,如果标签是1表示分类结果是杂色鸢尾,把它用独热码的形式表示就是0 1 0。这样可以表示每个分类的概率,也就是百分之0的可能是 0狗尾草鸢尾、百分之百的可能是 0杂色鸢尾、百分之0的可能是 2弗吉尼亚鸢尾
在这里插入图片描述TensorFlow中提供了one_hot函数,可以将待转换的数据直接转换为独热码形式
在这里插入图片描述

import tensorflow as tf

classes = 3
labels = tf.constant([1, 0, 2])  # 输入的元素值最小为0,最大为2
output = tf.one_hot(labels, depth=classes)
print("result of labels1:", output)
print("\n")

比如是3分类,一组标签是1、0、2,要把它们转换为独热码,用tf.one_hot函数,第一个变量写待转换的数据labels,第二个变量写几分类classes。赋值为3分类,把标签1 标签0 标签2转换为独热码,结果是010、100、001

对于分类问题,神经网络完成前向传播,计算出了每种类型的可能性大小1.01、2.01、-0.66。这些数字只有符合概率分布后,才可以与独热码标签做比较
在这里插入图片描述
于是我们使用这个公式 使输出符合概率分布
在这里插入图片描述0.256表示0类鸢尾的概率是25.6%
0.695表示1类鸢尾的概率是69.5%
0.048表示2类鸢尾的概率是4.8%
TensorFlow中使用softmax函数,实现这个公式的计算
在这里插入图片描述softmax函数可以使n分类的n个输出y0、y1…、yn-1符合概率分布,也就是每个输出值变为0到1之间的概率值,这些概率的和是1

在这里插入图片描述

import tensorflow as tf

y = tf.constant([1.01, 2.01, -0.66])
y_pro = tf.nn.softmax(y)

print("After softmax, y_pro is:", y_pro)  # y_pro 符合概率分布

print("The sum of y_pro:", tf.reduce_sum(y_pro))  # 通过softmax后,所有概率加起来和为1

我们给出的这个例子,把神经网络向前传播结果1.01、2.01、-0.66组成张量y,送入softmax函数,输出就是这些符合概率分布的值
在这里插入图片描述
assign_sub()函数常用于参数的自更新,等待自更新的参数w,要先被指定为可更新的训练,也就是variable类型,才可以实现自更新
在这里插入图片描述比如在这个例子中,w要先被定义为variable类型,初始值是4。对w做自减操作,可以用w.assign_sub()函数,()中是1,实现的是w=w-1的操作
运行结果:
w的初始值4做自减1的操作,w被更新为3
在这里插入图片描述
tf.argmax()可以返回指定操作轴方向最大值的索引号
在这里插入图片描述比如对这个二维张量argmax、axis=0,返回纵向最大值的索引号,分别是
1 2 5 8,最大值是8,它的索引号是3
2 3 4 7,最大值是7,它的索引号是3
3 4 3 2,最大值是4,它的索引号是1
argmax、axis=1时,返回横向最大索引号,分别是
1 2 3,最大值是3,它的索引号是2
2 3 4,最大值是4,它的索引号是2
5 4 3,最大值是5,它的索引号是0
8 7 2,最大值是8,它的索引号是0

猜你喜欢

转载自blog.csdn.net/weixin_44145452/article/details/112919632