Tensorflow 学习记录

人工智能实践:Tensorflow笔记
曹健

计算过程

  • Session 对象在使用完后需要关闭以释放资源,除了显式调用 close 外,也可以使用 with 代码块来自动完成关闭动作
  • 计算图 (Graph):搭建神经网络的计算过程,只搭建,不计算
  • 会话 (Session):执行计算图中节点的运算

典型操作

  • init = tf.global_variables_initializer() 赋初值
  • X = tf.placeholder(tf.float32, [None, 5], name = 'X')
    • 喂多组数据 None ,一组数据有 5 个特征
    • sess.run(..., feed_dict = {X: ...})
  • W = tf.Variable(tf.random_normal([2,3], stddev=2, mean=0, seed=1))
    • 产生 2×3 的标准差为2、均值为0的正态分布,随机种子为1
    • tf.truncated_normal() 去掉偏离点过大的正态分布
    • tf.random_uniform(shape=7,minval=0,maxval=1,dtype=tf.int32, seed=1) 平均分布,左闭右开
  • tf.where() 类似 ? : 表达式

损失函数

  • 均方误差 MSE(Mean Square Error)
    cost = tf.reduce_mean(tf.square(yhat-y)) tf.reduce_mean() 求平均值

  • 交叉熵 Cross Entropy
    -tf.reduce_mean(yhat * tf.log(tf.clip_by_value(y,1e-12,1.0)))
    若y 小于 1e-12 则为1e-12,大于 1.0 则为 1.0;再取平均

  • tf.nn.sparse_cross_entropy_with_logits(logits, labels)

反向传播训练方法

  • tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

  • tf.train.MomentumOptimizer(learning_rate, momentum).minimize(cost)

  • tf.train.AdamOptimizer(learning_rate).minimize(cost)
    Adam 算法通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率

网络优化

学习率

  • 更新参数的幅度
  • 过大导致不收敛(震荡),过小收敛缓慢
  • 指数衰减学习率
    • global_step = tf.Variable(0, trainable = False) 不被训练
    • learning_rate = tf.train.exponential_decay(learning_rate_base, global_step, learing_rate_step, learning_rate_decay, staircase=True)

滑动平均(影子值)

  • 记录了一段时间内模型中所有参数 w 和 b 各自的平均值

  • 利用滑动平均值可以增强模型的泛化能力

  • 计算过程:

    • 影子 = 衰减率 × 影子 + (1 - 衰减率) × 参数
    • 衰减率 = min{moving_average_decay, (1+轮数)/(10+轮数)}
  • ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)

    • MOVING_AVERAGE_DECAY 表示滑动平均衰减率,一般会赋接近 1 的值
    • global_step 表示当前训练了多少轮
  • ema_op = ema.apply(tf.trainable_variables())
    对所有待优化的参数求滑动平均

  • ema.average(参数) 返回参数的滑动平均值

正则化

  • 防止过拟合

  • 一般只对参数 W 使用

  • tf.add_to_collection('losses', tf.contrib.layers.l2_regularizer(REGULARIZER)(W))
    正则化带来的损失加到总损失中

  • loss = cem + tf.add_n(tf.get_collection('losses'))

  • REGULARIZER 是超参数

模块化神经网络

数据集

数据的预处理

前向传播

  • 初始化 W、b
  • 搭建网络,设计网络结构

反向传播

  • 训练网络,优化参数
  • 正则化、滑动平均
  • placeholder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值