课程概述

神经网络是一种模仿生物神经网络结构和功能的计算模型,用于对函数进行估计或近似,它能在外界信息的基础上改变内部结构,是一种自适应系统,即具备学习功能。当前,神经网络用于机器视觉、语音识别等很难被传统基于规则的编程所解决的问题。

本课程首先介绍了什么是TensorFlow以及如何在Linux、MacOS和Windows系统上安装它,接着讲解了TensorFlow相关的基础知识,比如:处理结构、会话控制、变量、传入值、激励函数等;然后展示了如何建造神经网络,包括添加神经层、建造、结果可视化等步骤,同时还展示了优化器optimizer和可视化工具Tensorboard的用法;最后是神经网络相关的高阶内容,包括:过拟合及缓解、卷积神经网络CNN、循环神经网络RNN、自编码AutoEncoder、批标准化、迁移学习等知识点。

【课程目标】

了解神经网络及TensorFlow

掌握如何使用TensorFlow建造神经网络

了解卷积神经网络、循环神经网络、迁移学习等概念

【适用对象】

AI开发者、学生

机构简介

腾讯产业互联网学堂

腾讯云旗下面向云生态用户的一站式学习成长平台

讲师简介

  • 周沫凡
    毕业于澳洲格里菲斯大学工程系。乐于分享深度学习的技能。在自然语言处理,强化学习方面有丰富的学术和行业经验。在腾讯云主要负责智能对话系统的研发。

讲义

Tensorflow tutorials (Eng Sub) 神经网络

什么是TensorFlow?

TensorFlow是谷歌开发的一款神经网络的Python外部的结构包,直接用TensorFlow就可以很快速的入门神经网络。所有TensorFlow的信息,你都可以在百度或者谷歌搜索TensorFlow获得相关信息。

TensorFlow的安装

  • Pip安装
  • Virtualenv安装
  • Anaconda安装
  • Docker安装
  • 从安装源安装

使用pip在每个系统的安装方式:

如果还没有安装,可以在Terminal窗口运行

  • Linux和MacOS

CPU版,执行如图语句。

GPU版,像找到合适自己版本的安装文件,根据自己的Python版本,执行如图语句。

  • Windows
  • 测试
  • 更新TensorFlow

TensorFlow实例1

TensorFlow中的input layer层是所有的相片或者数据输入等资料;output layer层是判断这些资料是什么,代表了什么。举例说明,其中X代表一串数字,Y代表一个函数。

TensorFlow实例处理结构

TensorFlow底层的结构即神经网络结构,包含输入层、隐藏层、输出层。输入层可以包含x-input和y-input。隐藏层可以包含weights、blases、激励函数。TensorFlow做的第一步就是建立一个结构,然后将数据放到结构中,让TensorFlow自己运行。

TensorFlow实例2

该实例的结构目的为输出每一次训练之后后,其参数是多少。

TensorFlow的Session会话控制

Session是对话的控制。我可以用session.run来执行创建好的结构上的某一个点的功能。

TensorFlow的Variable变量

TensorFlow中定义变量和Python中定义变量有所不同。需要使用session.run初始化所有的变量才会在TensorFlow中激活。

TensorFlow 的 placeholder传入值

placeholder是在开始是先hold住类似变量的东西,到session.run时,值要从外界传入进来,把placeholder填进去。

TensorFlow的激励函数activation function

激励函数是让某一部分的神经元先激活,然后将激活的消息传入到后面神经系统中。激励函数其实就是一些方程,比如Linear function、Step function、Ramp function,以及非线性方程。TensorFlow中的激励函数是activation function。如果你想知道有哪些activation function,可以在百度或谷歌中搜索TensorFlow activation function,打开TensorFlow链接即可查看Neural Network下的activation function,如tf.nn.relu(features,name=None)、tf.nn.softplus(features,name=None)、tf.nn.dropout(x,keep_prob,noise_shape=None,seed=None,name=None)等等。

TensorFlow实例3添加层def add_layer()

在TensorFlow中需要制作的层layer1、layer2两个层。它们内含很多东西,如weights、biases等。

TensorFlow实例4建造神经网络build a neural network

相关代码和讲解请在视频内查看详细演示。

TensorFlow实例5结果可视化plot result

为了更直观的了解神经网络如何优化的,我们需要将其变成可视化。其中结果可视化的模块为matplotlib.pyplot,可以提前下载。

TensorFlow优化器optimizer

TensorFlow中的优化器有很多不同的种类,其中最基本的一种叫GradientDescentOptimizer。GradientDescent是机器学习中最为重要和基础的线性优化。GradientDescent实际上取决于的是Data的大小和类型。除此之外,还有AdadeltaOptimizer、AdagradOptimizer、MomentumOptimizer、AdamOptimizer、FtrlOptimizer、RMSPropOptimizer等。这几种Optimizer都是基于对其学习效率的改变,如MomentumOptimizer考虑的不仅仅这一步的学习效率,还考虑上一步的学习效率,因此会比AdagradOptimizer更快达到全局最小量。

如果是初学者,建议使用GradientDescentOptimizer。更高级的学习者,可以考虑使用MomentumOptimizer、AdamOptimizer,或者RMSPropOptimizer。

TensorFlow Tensorboard可视化好帮手 上

使用TensorFlow自己提供的Tensorboard可以很直观的看到整个TensorFlow的神经网络的框架结构。这个结构分成input层、隐藏层layer、计算loss。其中隐藏层包括权重、偏差、计算;input层包括x-input和y-input。

TensorFlow Tensorboard可视化好帮手 下

继续介绍TensorFlow的Tensorboard如何可视化整个神经网络的建造过程和训练过程。

TensorFlow Classification分类学习

Classification用于分类,之前的所有例子都为线性回归。线性回归为预测的值是连续分布的值,但是如果是Classification则是将值进行分类。TensorFlow中有5万多个数据图片,这些图片都是以28✖28=784个数据点的形式被计算机读取。放在TensorFlow中,784则为x输入的参数,y则为矩阵,用1在矩阵中的不同位置代表分类。

TensorFlow dropout解决overfitting问题

在机器学习中,overfiting是一个非常常见的问题。如图所示正常情况下黑色曲线会明显区分两个区域,但是如果机器学习过度精准学习,就会将原本在红色中的蓝色也被囊括在其中,即overfiting。在图中,绿色的曲线则为overfiting。为了让机器学习呈现为黑色曲线,可以使用dropout。

TensorFlow CNN卷积神经网络 1

CNN卷积神经网络是计算机视觉处理飞跃的提升。CNN会将图片中的长、宽、RGB,即图片厚度进行压缩,具体操作为将长宽压小,RGB增大。从图中抽取小部分PATCH进行分析,抽取时有一个参数STRIDE,即每一次跨多少像素点抽取。最终将抽取的部分组合起来,称为PADDING。PADDING分为VALID PADDING,即抽取部分比原先的宽和长裁剪了、SAME PADDING,即抽取部分和原先的长宽相同。为了避免重要信息的丢失,可以使用POOLING方法。POOLING分为MAX POOLING和MEAN POOLING。CNN的整体结构如图所示。

TensorFlow CNN卷积神经网络 2

相关代码和讲解请在视频内查看详细演示。

TensorFlow CNN卷积神经网络 3

相关代码和讲解请在视频内查看详细演示。

TensorFlow Saver保存读取

相关代码和讲解请在视频内查看详细演示。

RNN 循环神经网络

如果数据是按照顺序排列的,即可使用RNN。RNN与CNN做的事情相同,只不过RNN在时间顺序上有所不同。RNN通过对每一个输入值保有记忆,以次对下一个内容进行预测。在预测下一个内容是,需要回顾之前的记忆有哪些,加上现在新的记忆,输出内容。

神经网络中可能存在两个问题,即Gradient Vanishing和Gradient Exploding。如果序列很长,RNN在反向传递时则有可能传不到最开始的地方,则会产生梯度消失或梯度爆炸两个问题。这时候就有了Long Short-term Memory,即LSTM。

RNN lstm 循环神经网络 (分类例子)

相关代码和讲解请在视频内查看详细演示。

RNN lstm (regression 回归例子)

相关代码和讲解请在视频内查看详细演示。

RNN lstm (回归例子可视化)

相关代码和讲解请在视频内查看详细演示。

自编码Autoencoder (非监督学习)

Autoencoder就是把数据feature压缩解压缩,属于非监督学习。

name_scope/ variable_scope 命名方式

有两种方式,分别为tf.get_variable、tf.Variable。

Batch normalization批标准化

Batch normalization是对每一层神经网络层做normalization处理。为了有效地传递信息,对数据预处理,可以进行normalization。没有用BN时,每层的值迅速变为0,即所有神经元都已经死了。而有了BN,relu过后,每层的值都能有一个比较好的分布效果。

TensorFlow新版更新

版本更新后不同功能的更新和优化,请在视频内查看详细介绍。

TensorFlow可视化梯度下降/公式调参

TensorFlow可以用于可视化梯度下降,以及对以前公式的调参。本小节也将介绍全局最优和局部最优,如果你对全局最优不是很了解,可以进入莫烦PYTHON中进行相关学习。

TensorFlow迁移学习Transfer Learning

神经网络中的CNN和RNN都有非常庞大的系统,其中参数庞大,单是训练这些系统都需要花费非常多的时间,所以需要使用迁移学习。迁移学习的目的就在于节约时间,不做重复性工作。本小节介绍的迁移VGG参考machrisaa改写的VGG16的代码,可以在莫烦PYTHON中下载相关参数。

本节课所有相关代码:https://github.com/MorvanZhou/PyTorch-Tutorial

课程评价(4)

感谢你参加本课程,请你作出评价:
0/300

以下选自学员评价

沧***人
2020-11-03
适合小白
用户7***087
2020-09-07
讲得好好懂,适合我这种入门级小白
用户6***444
2019-11-05
缺代码讲解
付**
2019-08-20
大神讲课,膜拜学习