博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tensorflow 学习记录
阅读量:4091 次
发布时间:2019-05-25

本文共 1896 字,大约阅读时间需要 6 分钟。

计算过程

  • 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

转载地址:http://ludii.baihongyu.com/

你可能感兴趣的文章
React Hooks 一步到位
查看>>
React Redux常见问题总结
查看>>
前端 DSL 实践指南
查看>>
ReactNative: 自定义ReactNative API组件
查看>>
cookie
查看>>
总结vue知识体系之实用技巧
查看>>
PM2 入门
查看>>
掌握 TS 这些工具类型,让你开发事半功倍
查看>>
前端如何搭建一个成熟的脚手架
查看>>
Flutter ListView如何添加HeaderView和FooterView
查看>>
Flutter key
查看>>
Flutter 组件通信(父子、兄弟)
查看>>
Flutter Animation动画
查看>>
Flutter 全局监听路由堆栈变化
查看>>
Android 混合Flutter之产物集成方式
查看>>
Flutter混合开发二-FlutterBoost使用介绍
查看>>
Flutter 混合开发框架模式探索
查看>>
Flutter 核心原理与混合开发模式
查看>>
Flutter Boost的router管理
查看>>
Android Flutter混合编译
查看>>