15 keras模型

原文地址
介绍完了优化器和目标函数,那么剩下的就是训练模型了。这一小节,我们来看一下Keras的Models是如何使用的。Keras可以建立两种模型,一种是线性叠加的,层与层之间是全连接的方式,一个输入,一个输出;另外一种是图型的,输入与输出数量任意,并且可以指定层与层之间的部分连接方式。

一、Sequential(序贯模型)方法及属性介绍

model = keras.models.Sequential()  

序贯模型就是把每一层按照次序叠加起来,每层之间采用全连接方式。下面看一下对象model都有哪些方法。
1 add(layer):往model里边增加一层
2 compile(optimizer, loss, class_model=”categorical”):
参数:

  • optimizer:指定模型训练的优化器;
  • loss:目标函数;
  • class_mode: ”categorical”和”binary”中的一个,只是用来计算分类的精确度

3 fit(X, y, batch_size=128, nb_epoch=100, verbose=1, validation_split=0,****validation_data=None,shuffle=True,show_accuracy=False,callbacks=[],****class_weight=Noe, sample_weight=None)****:用于训练一个固定迭代次数的模型**
返回:记录字典,包括每一次迭代的训练误差率和验证误差率;

参数:

X:训练数据
y : 标签
batch_size : 每次训练和梯度更新块的大小。
nb_epoch: 迭代次数。
verbose : 进度表示方式。0表示不显示数据,1表示显示进度条,2表示用只显示一个数据。
callbacks : 回调函数列表。就是函数执行完后自动调用的函数列表。
validation_split : 验证数据的使用比例。
validation_data : 被用来作为验证数据的(X, y)元组。会代替validation_split所划分的验证数据。
shuffle : 类型为boolean或 str(‘batch’)。是否对每一次迭代的样本进行shuffle操作(可以参见博文Theano学习笔记01--Dimshuffle()函数)。’batch’是一个用于处理HDF5(keras用于存储权值的数据格式)数据的特殊选项。
show_accuracy:每次迭代是否显示分类准确度。
class_weigh : 分类权值键值对。原文:dictionary mapping classes to a weight value, used for scaling the lossfunction (during training only)。键为类别,值为该类别对应的权重。只在训练过程中衡量损失函数用。
sample_weight : list or numpy array with1:1 mapping to the training samples, used for scaling the loss function (duringtraining only). For time-distributed data, there is one weight per sample pertimestep, i.e. if your output data is shaped(nb_samples, timesteps, output_dim), your mask should be of shape(nb_samples, timesteps, 1). This allows you to maskout or reweight individual output timesteps, which is useful in sequence tosequence learning.

4 evalute(X, y, batch_size=128, show_accuracy=False,****verbose=1, sample_weight=None)****: 展示模型在验证数据上的效果
返回:误差率或者是(误差率,准确率)元组(if show_accuracy=True)
参数:fit函数中的参数基本一致,其中verbose取1或0,表示有进度条或没有

5 predict(X, batch_size=128, verbose=1): 用于对测试数据的预测
返回:对于测试数据的预测数组
参数:fit函数中的参数一样。

6 predict_classes(X, batch_size=128, verbose=1): 用于对测试数据的分类预测
返回:对于测试数据的预测分类结果数组
参数:evaluate函数中的参数一样。

7 train_on_batch(X, y, accuracy=False, class_weight=None, sample_weight=None): 对数据块进行计算并梯度更新
返回:数据块在现有模型中的误差率或者元组(if show_accuracy=True)
参数:evaluate函数中的参数一样。

8 test_on_batch(X, y, accuracy=False, sample_weight=None): 用数据块进行性能验证
返回:数据块在现有模型中的误差率或者元组(误差率,准确率)(if show_accuracy=True)
参数:evaluate函数中的参数一样。

9 save_weights (fname, overwrite=False): 将所有层的权值保存为HDF5文件
返回:如果overwrite=False并且fname已经存在,则会抛出异常。
参数:

fname: 文件名
overwrite : 如果已经存在,是否覆盖原文件。
10 load_weights(fname): 加载已经存在的权值数据到程序中的模型里面。文件中的模型和程序中的模型结构必须一致。在compile之前或之后都可以调用load_ weights函数。
参数: fname文件名

二、Sequential(序贯模型)举例说明

from keras.models import Sequential  
from keras.layers.core import Dense, Dropout, Activation  
from keras.optimizers import SGD  
   
model = Sequential()  
model.add(Dense(2, init='uniform', input_dim=64))  
model.add(Activation('softmax'))  
   
model.compile(loss='mse', optimizer='sgd')  
   
''''' 
Verbose=1或2的结果演示 
'''  
model.fit(X_train, y_train, nb_epoch=3, batch_size=16, verbose=1)  
# 输出信息  
''''' 
Train on 37800 samples, validate on 4200 samples 
Epoch 0 
37800/37800 [==============================] - 7s - loss: 0.0385 
Epoch 1 
37800/37800 [==============================] - 8s - loss: 0.0140 
Epoch 2 
10960/37800 [=======>......................] - ETA: 4s - loss: 0.0109 
'''  
   
model.fit(X_train, y_train, nb_epoch=3, batch_size=16, verbose=2)  
# 输出信息  
''''' 
Train on 37800 samples, validate on 4200 samples 
Epoch 0 
loss: 0.0190 
Epoch 1 
loss: 0.0146 
Epoch 2 
loss: 0.0049 
'''  
   
''''' 
show_accuracy=True的演示,会输出误差率-正确率 
'''  
model.fit(X_train, y_train, nb_epoch=3, batch_size=16, verbose=2, show_accuracy=True)  
# 输出信息  
''''' 
Train on 37800 samples, validate on 4200 samples 
Epoch 0 
loss: 0.0190 - acc.: 0.8750 
Epoch 1 
loss: 0.0146 - acc.: 0.8750 
Epoch 2 
loss: 0.0049 - acc.: 1.0000 
'''  
   
''''' 
validation_split=0.1表示总样本的10%用来进行验证。比如下方实例,样本总数42000,则验证数据占10%,即4200,剩余的37800为训练数据。 
'''  
model.fit(X_train, y_train, nb_epoch=3, batch_size=16, validation_split=0.1, show_accuracy=True, verbose=1)  
# outputs  
''''' 
Train on 37800 samples, validate on 4200 samples 
Epoch 0 
37800/37800 [==============================] - 7s - loss: 0.0385 - acc.:0.7258 - val. loss: 0.0160 - val. acc.: 0.9136 
Epoch 1 
37800/37800 [==============================] - 8s - loss: 0.0140 - acc.:0.9265 - val. loss: 0.0109 - val. acc.: 0.9383 
Epoch 2 
10960/37800 [=======>......................] - ETA: 4s - loss: 0.0109 -acc.: 0.9420 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容