Home » 深度学习
[动手学深度学习DAY5]:卷积神经网络
1.卷积神经网络基础 2.LeNet 3.经典CNN模型 1.卷积神经网络基础 卷积层 池化层 细节解释 卷积层 二维互相关运算 二维互相关(cross-correlation)运算的输入是一个二维输入数组和一个二维核(kernel)数组,输出也是一个二维数组,其中核数组通常称为卷积核或过滤器(filter)。卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输…
Read More »[动手学深度学习DAY4]:RNN进阶、机器翻译和Transformer
Part1.RNN进阶 GRU LSTM 深度循环神经网络 双向循环神经网络 GRU RNN结构中容易出现梯度衰减或者爆炸,我们通过添加门控结构可以一定程度缓解这个问题,也可以捕捉时间序列中时间步距离较长的依赖关系。 $$R_{t} = σ(X_tW_{xr} + H_{t−1}W_{hr} + b_r)\\ Z_{t} = σ(X_tW_{xz} + H_{t−1}W_{hz} + b_z)\\…
Read More »[动手学深度学习DAY3]:过拟合、欠拟合和梯度消失、梯度爆炸
Part1.过拟合、欠拟合 训练误差 模型在训练数据集上的误差。 泛化误差 模型在任意一个测试数据样本上的误差,一般通过测试集上的误差进行近似。 过拟合 模型的训练误差远远小于模型的泛化误差,即模型过度拟合了训练集上的数据分布,而该数据分布并不能很好的近似数据的原始分布,导致测试数据的误差很大。 欠拟合 模型无法获得较低的训练误差,说明模型不能学习拟合训练集上的数据分布。 模型复杂度 模型复杂度一…
Read More »[动手学深度学习DAY2]:文本预处理、语言模型及RNN基础
Part1.文本预处理 文本预处理主要分为: 读入文本 分词 建立字典 将文本的词序列转为索引序列 读入文本
1 2 3 4 5 6 7 8 9 10 |
import collections import re def read_time_machine(): with open('/home/kesci/input/timemachine7163/timemachine.txt', 'r') as f: lines = [re.sub('[^a-z]+', ' ', line.strip().lower()) for line in f] return lines lines = read_time_machine() print('# sentences %d' % len(lines)) |
分词 我们对每个句子进行分词,也就是将一个句子划分成若干个词(token),转换为一个词的序列。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def tokenize(sentences, token='word'): #Split sentences into word or char tokens if token == 'word': return [sentence.split(' ') for sentence in sentences] elif token == 'char': return [list(sentence) for sentence in sentences] else: print('ERROR: unkown token type '+token) tokens = tokenize(lines) tokens[0:2] #[['the', 'time', 'machine', 'by', 'h', 'g', 'wells', ''], ['']] |
我们也可以通过现有的分词工具进行分词,例如spaCy和NLT…
Read More »[动手学深度学习DAY1]:线性回归、Softmax和多层感知机
Part1:线性回归 线性回归就是通过一个线性函数来拟合数据集中输入与输出之间的关系。线性函数可以表示为:$$y = XW + b$$通过给定一些训练数据(training set,包含数据的输入\(X\)与其对应的输出\(y\))对线性回归模型进行训练,我们可以得到一个能够有效拟合真实数据集的线性函数模型参数\(W\)和\(b\),该函数可以对新的输入数据预测其对应的输出。下面对线性回归的主要步…
Read More »