总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深度学习(deep learning)是机器学习的众多分支之一,它的模型是一长串几何函数,一个接一个地作用在数据上.这些运算被组织成模块,叫作层(layer).深度学习模型通常都是层的堆叠,或者更通俗地说,是层组成的图.这些层由权重(weight)来参数化,权重是在训练过程中需要学习的参数.模型的知识…
生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 使用 LSTM 生成文本 生成序列数据 用深度学习生成序列数据的通用方法,就是使用前面的标记作为输入,训练一个网络(通常是循环神经网络或卷积神经网络)来预测序列中接下来的一个或多个标记.例如,给定输入the cat is on the ma,训练网络来预测目标 t,即下一个字符.与前面处理文本数据…
神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推力,之后你便再也无法控制其飞行轨迹或着陆点.如果想要避免不好的结果(并避免浪费纸飞机),更聪明的做法是不用纸飞机,而是用一架无人机,它可以感知其环境,将数据发回给操纵者,并且能够基于当前状态自主航行.下面要介绍的技术,可以让model.fit() 的调用从纸飞机变为智能的自主无人机,可以自我反省并动…
Keras 函数式编程 利用 Keras 函数式 API,你可以构建类图(graph-like)模型.在不同的输入之间共享某一层,并且还可以像使用 Python 函数一样使用 Keras 模型.Keras 回调函数和 TensorBoard 基于浏览器的可视化工具,让你可以在训练过程中监控模型 对于多输入模型.多输出模型和类图模型,只用 Keras 中的 Sequential模型类是无法实现的.这时可以使用另一种更加通用.更加灵活的使用 Keras 的方式,就是函数式API(functional…
介绍一维卷积神经网络 卷积神经网络能够进行卷积运算,从局部输入图块中提取特征,并能够将表示模块化,同时可以高效地利用数据.这些性质让卷积神经网络在计算机视觉领域表现优异,同样也让它对序列处理特别有效.对于某些序列处理问题,这种一维卷积神经网络的效果可以媲美 RNN,而且计算代价通常要小很多,并且,对于文本分类和时间序列预测等简单任务,小型的一维卷积神经网络可以替代 RNN,而且速度更快 二维卷积是从图像张量中提取二维图块并对每个图块应用相同的变换,按照同样的方法,也可以使用一维卷积,从序列中提取…
本节介绍循环神经网络及其优化 循环神经网络(RNN,recurrent neural network)处理序列的方式是,遍历所有序列元素,并保存一个状态(state),其中包含与已查看内容相关的信息.在处理两个不同的独立序列(比如两条不同的 IMDB 评论)之间,RNN 状态会被重置,因此,你仍可以将一个序列看作单个数据点,即网络的单个输入.真正改变的是,数据点不再是在单个步骤中进行处理,相反,网络内部会对序列元素进行遍历,RNN 的特征在于其时间步函数 Keras 中的循环层 from ker…
本节讲深度学习用于文本和序列 用于处理序列的两种基本的深度学习算法分别是循环神经网络(recurrent neural network)和一维卷积神经网络(1D convnet) 与其他所有神经网络一样,深度学习模型不会接收原始文本作为输入,它只能处理数值张量.文本向量化(vectorize)是指将文本转换为数值张量的过程.它有多种实现方法 将文本分割为单词,并将每个单词转换为一个向量 将文本分割为字符,并将每个字符转换为一个向量 提取单词或字符的 n-gram,并将每个 n-gram 转换为一…
本节讲卷积神经网络的可视化 三种方法 可视化卷积神经网络的中间输出(中间激活) 有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义 可视化卷积神经网络的过滤器 有助于精确理解卷积神经网络中每个过滤器容易接受的视觉模式或视觉概念 可视化图像中类激活的热力图 有助于理解图像的哪个部分被识别为属于某个类别,从而可以定位图像中的物体 可视化中间激活 是指对于给定输入,展示网络中各个卷积层和池化层输出的特征图,这让我们可以看到输入如何被分解为网络学到的不同过滤器…
本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好 使用预训练网络有两种方法:特征提取(feature extraction)和微调模型(fine-tuning) 特征提取是使用之前网络学到的表示来从新样本中提取出有趣的特征.然后将这些特征输入一个新的分类器,从头开始训练 ,简言之就是用提取的特征取代原…
本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常会随着网络加深而变小.通道数量由传入 Conv2D 层的第一个参数所控制 用卷积神经网络对 MNIST 数字进行分类Demo from keras import layers from keras import models from keras.datasets import mnist from…