斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程

课程概要

1、tensorflow介绍
2、代码展示

一、tensorflow介绍

1、什么是tensorflow?

  • 针对数量计算的使用数据流图流程图开源软件库
  • 由Google Brain团队开发的机器学习的研究
  • Tensorflow 是表现机器学习算法的接口,以及执行算法的执行器。
    斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第1张图片

2、编程模型

主要思想:将数量计算表现为图(graph)

  • 图节点表示是针对输入的操作(operation)以及输出
  • 图边表示节点之间流动的张量(tensor)
    斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第2张图片
  • 变量(variable)是状态节点,输出他们自己的值。如b,W
  • 占位节点(Placeholders)是在执行的时候会被喂入值的节点。如x
  • 数学运算
    • MatMul:两个矩阵的值相乘 Multiply two matrix values.
    • Add: 对应元素相加
    • ReLU: 对应元素的激活函数
      斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第3张图片
      对应代码:
  • 创建权重,并进行初始化W~Uniform(-1,1);b=0
  • 创建x的输入占位节点(placeholder):m*784的输入矩阵
  • 建立流程图(flow graph)

代码运行时,会自动在目前图(graph)中自动生成新的节点。
斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第4张图片

3、节点运行

在定义好了节点以后,我们可以为图部署一个会话(session):和目前的执行环境相联系。
斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第5张图片
在代码上的体现是sess.run(fetches,feeds)

  • Fetches:一系列图节点,返回这些节点的输出
  • feeds:从图节点字典映射到具体的值。
    斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第6张图片

4、模型训练

  • 定义损失:建立一个placeholder来表示标签(labels),基于标签和预测来构建损失节点。

斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第7张图片- 梯度计算:通过下面第一行的代码,我们可以把优化运算加入到运算图中,同时指定损失函数是cross_entropy,学习率是0.5。除了这种优化方法以外,还有其他的优化器。这些优化器可以自动后馈计算参数的梯度。

斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第8张图片
斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第9张图片

  • 训练模型的步骤
    • 创建会话(session)
    • 建立训练计划
    • 运行优化器 train_step
      斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第10张图片

5、变量共享问题

有的时候我们会使用很多个GPU来训练神经网络,这个时候就涉及到变量共享的问题。
斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第11张图片有一种方法是在一开始就建立变量字典,用一些字符串来代表变量,但是不利于封装。
斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第12张图片解决方法是建立一个变量层(variable scope)

  • tf.variable_scope() :提供一个层级来避免命名冲突
  • tf.get_variable() :当已经存在该变量的时候,就从命名层获取该变量;当不存在时就创建该变量
    斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第13张图片

6、简单总结

  • 构建图
    • 前馈/预测
    • 优化(梯度和train_step运算)
  • 初始化一个会话
  • 使用session.run(train_step, feed_dict)训练

二、代码展示

1、以线性回归为例

斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第14张图片斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第15张图片
斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第16张图片绘制出来的图像
斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第17张图片

2、skip-gram

斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第18张图片斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第19张图片计算结果
斯坦福大学-自然语言处理与深度学习(CS224n) 笔记 第七课 tensorflow教程_第20张图片

你可能感兴趣的:(CS224,Natural,Language,Processing,w)