tensorflow学习笔记(1)------北京大学曹健

    科技2025-12-22  22

    tensorflow学习笔记(1)

    0 环境搭建

    tensorfolw的环境搭建(anaconda版,一步到位)

    视频里环境搭建过程很详细,就不细说了。(视频中也有配置视频,链接在文末) 另外,本笔记只是我记忆难记的地方写的,不喜勿喷。 课程环境(python3.7 、tensorfow2.1)

    1.1 梯度下降公式

    lr为学习率,w为权重。(lr太小,参数更新很慢;lr太大,会在最小的损失值左右摆动)

    代码1.1

    反向传播,梯度下降,使损失函数减小的过程,权重更新的过程。

    import tensorflow as tf w = tf.Variable(tf.constant(5, dtype=tf.float32)) Ir = 0.2 epoch = 40 for epoch in range(epoch): with tf.GradientTape() as tape: loss = tf.square(w+1) grads = tape.gradient(loss, w) # 求梯度 w.assign_sub(Ir * grads) # w = w - Ir(0.2) * grads(12) print("After %s epoch, w is %f, loss is %f" % (epoch, w.numpy(), loss))

    tf.Varable 创建一个可训练的张量 tf.GradienTape()函数可以实现某个函数对某个参数求导的过程。(相当于高中数学老师对你们说的,y对x求导的过程)

    1.2 张量

    ''' 创建一个张量 tf.constant(张量内容,dtype= 数据类型) ''' import tensorflow as tf a = tf.constant([1, 5], dtype=tf.int64) print(a) print(a.dtype) print(a.shape)

    输出结果:

    ''' ########创建一个张量######### 创建一个全为0、1的张量 tf.zeros(维度) tf.ones(维度) 创建全为指定值得张量 tf.fill(维度, 指定值) 生成正态分布的随机数,默认值为0,标准差为1 tf.random.normal(维度, mean=均值, stddev=标准差) 生成截断式正态分布的随机数 tf.random.truncated_normal(维度, mean=均值, stddev=标准差) 生成均匀分布随机数 tf.random.uniform(维度, minval=最小值, maxval=最大值) '''

    1.3 常用函数

    ''' 1. 强制转换类型: tf.cast(张量名, dtype=数据类型) 2. 计算张量维度上元素的最小值: tf.reduce_min(张量名) 3. 计算张量维度上元素的最大值: tf.reduce_max(张量名) ''' ''' 4. 计算张量沿着指定维度的平均值 tf.reduce_mean(张量名, axis=操作轴) 5. 计算张量沿着指定维度的和 tf.reduce_sum(张量名, axis=操作轴) ################## 只有相同类型的才能进行四则运算 6. 实现两个张量对应的元素相加 tf.add(张量1, 张量2) 7. 实现两个张量对应的元素相减 tf.subtract(张量1, 张量2) 8. 实现两个张量对应的元素相乘 tf.multiply(张量1, 张量2) 9. 实现两个张量对应的元素相除 tf.divide(张量1, 张量2) ''' ''' 10. 计算张量的平方 tf.square(张量名) 11. 计算张量的n次方 tf.pow(张量名,n次方) 12. 计算张量的开方 tf.sqrt(张量名) 13. 实现两个矩阵的相乘 tf.matmul(矩阵1, 剧矩阵2) '''

    1.4 常用函数2

    1. enumerate() 枚举

    通常用在:

    seq = ["aaa", "bbb", "ccc"] for i, element in enumerate(seq): print(i, element)

    运行结果: 也就是元素的索引和元素相对应着输出,在后面深度学习中,经常用在选取某目标的识别准确率的选取上。

    2. tf.nn.softmax()

    概率分布,通过该函数确定3分类问题中各个分类的可能性,并且三个类别可能性相加为1.(3类是举例,其实几类都行,这里有点像高中概率问题)

    3. assign_sub

    w.assign_sub(w要自减得内容)

    4. argmax

    tf.argmax(张量名,axis = 操作轴) 返回列表中最大值的索引

    Processed: 0.014, SQL: 9