赞
踩
目录
一、keras优化方法介绍
1、SGD随机梯度下降
2、Adam自适应动量估计
3、RMSProp
二、优化的实战项目:学生录取
1、加载数据
2、数据查看
3、one-hot编码
4、建立模型
5、训练模型
6、评估模型

一、keras优化方法简介
1、SGD随即梯度下降
使用如下三个参数:(1)学习速率
(2)动量:获取前几步的加权平均值,不至于陷于局部最小点
(3)Nesterov动量:当最接近解决方案时,它会减缓梯度
2、Adam Adaptive Movement Estimation
使用更复杂的指数衰减。有2个动量:(1)第一个跟SGD一样,前几步的平均值;
(2)第二个是前几步的方差。
3、RMSProp
RMS:均方根误差。指数衰减的平方梯度均值来减小学习速率。
二、优化的实战项目:学生录取
0、导入库
- # Imports
- import numpy as np
- import keras
- from keras.datasets import imdb
- from keras.models import Sequential
- from keras.layers import Dense, Dropout, Activation
- from keras.preprocessing.text import Tokenizer
- import matplotlib.pyplot as plt
- %matplotlib inline
-
- np.random.seed(42)
(1)keras.datasets (参考文章:keras数据集介绍)有几个常用的数据库,其中就有一个是IMDB电影评论库。
(2)keras.preprocessing.text (参考文章:文本预处理tokenizer,keras中文文档-tokenizer)
自然语言需要进行预处理,preprocessing.text主要有4个模块:
(1)IMDB数据集
- from keras.datasets import imdb
- (x_train, y_train), (x_test, y_test) = imdb.load_data(path="imdb.npz",
- num_words=None,
- skip_top=0,
- maxlen=None,
- seed=113,
- start_char=1,
- oov_char=2,
- index_from=3)
imdb:IMDB数据集,训练数据有25000条电影评论,正面评价标记为1,负面评价标记为0。测试数据也有25000条。
所有这些参数说明可以在这里查看。总而言之,最重要的是标蓝的2个参数:
skip_top
设置为 2 或更高来跳过它。
每条评论都是用数字1-1000来表示的。
(1)分词器234分词器Tokenizer
- keras.preprocessing.text.Tokenizer(num_words=None,
- filters='!"#$%&()*+,-./:;<=>?@[\]^_`{|}~\t\n',
- lower=True,
- split=" ",
- char_level=False)
Tokenizer是一个用于向量化文本,或将文本转换为序列(即单词在字典中的下标构成的列表,从1算起)的类。
与text_to_word_sequence
同名参数含义相同
num_words:None或整数,处理的最大单词数量。若被设置为整数,则分词器将被限制为待处理数据集中最常见的num_words
个单词
char_level: 如果为 True, 每个字符将被视为一个标记
fit_on_texts(texts)
texts_to_sequences(texts)
texts:待转为序列的文本列表
返回值:序列的列表,列表中每个序列对应于一段输入文本
texts_to_sequences_generator(texts)
本函数是texts_to_sequences
的生成器函数版
texts:待转为序列的文本列表
返回值:每次调用返回对应于一段输入文本的序列
texts_to_matrix(texts, mode):
texts:待向量化的文本列表
mode:‘binary’,‘count’,‘tfidf’,‘freq’之一,默认为‘binary’
返回值:形如(len(texts), nb_words)
的numpy array
fit_on_sequences(sequences):
sequences_to_matrix(sequences):
sequences:待向量化的序列列表
mode:‘binary’,‘count’,‘tfidf’,‘freq’之一,默认为‘binary’
返回值:形如(len(sequences), nb_words)
的numpy array
(2)utils工具(参考文章:keras英文文档-utils,keras中文文档-utils)
每一次epoch就完全测试所有的样本
batch_size个数据就是一个迭代,每一次迭代更新一次权重。样本总数/batch_size就是迭代数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。