12 学习笔记 例子

下面来看几个例子,来了解一下Keras的便捷之处。不需要具体去研究代码的意思,只需要看一下这个实现过程。用编程的装饰模式把各个组件模块化,然后可以自己随意的拼装。首先介绍一个基于Keras做的手写MNIST识别的代码,剩下的就看一下实现过程即可。

0用Keras实现MNIST识别。

from keras.models import Sequential   
from keras.layers.core import Dense, Dropout,Activation   
from keras.optimizers import SGD   
from keras.datasets import mnist   
   
import numpy as np 
   
model = Sequential()   
model.add(Dense(500, input_shape=(784,), init='glorot_uniform')) # 输入层,28*28=784   
model.add(Activation('tanh')) # 激活函数是tanh   
model.add(Dropout(0.5)) # 采用50%的dropout  
   
model.add(Dense(500, init='glorot_uniform')) # 隐层节点500个   
model.add(Activation('tanh'))   
model.add(Dropout(0.5))  
   
# 输出结果是10个类别,所以维度是10  
model.add(Dense(10))  
model.add(Activation('softmax')) # 最后一层用softmax  
   
# 设定学习率(lr)等参数   
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9,nesterov=True)    
# 使用交叉熵作为loss函数,就是熟知的log损失函数  
model.compile(loss='categorical_crossentropy',  
optimizer=sgd, class_mode='categorical')  

# 也可以现行下载,然后加载本地文件
path = r"https://s3.amazonaws.com/img-datasets/mnist.npz"
f = np.load(path)
X_train = f['x_train']
Y_train = f['y_train']
X_test = f['x_test']
Y_test = f['y_test']
f.close()

# 使用Keras自带的mnist工具读取数据(第一次需要联网)  
#(X_train, y_train), (X_test, y_test) = mnist.load_data()  
# 由于输入数据维度是(num, 28, 28),这里需要把后面的维度直接拼起来变成784维  
X_train = X_train.reshape(X_train.shape[0],X_train.shape[1]* X_train.shape[2])  
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1]* X_test.shape[2])   
# 这里需要把index转换成一个one hot的矩阵  
Y_train = (np.arange(10) == Y_train[:,None]).astype(int)   
Y_test = (np.arange(10) == Y_test[:,None]).astype(int)  
   
# 开始训练,这里参数比较多。batch_size就是batch_size,nb_epoch就是最多迭代的次数, shuffle就是是否把数据随机打乱之后再进行训练  
# verbose是屏显模式,官方这么说的:verbose: 0 forno logging to stdout, 1 for progress bar logging, 2 for one log line per epoch.  
# 就是说0是不屏显,1是显示一个进度条,2是每个epoch都显示一行数据  
# show_accuracy就是显示每次迭代后的正确率  
# validation_split就是拿出百分之多少用来做交叉验证  
model.fit(X_train, Y_train, batch_size=200, nb_epoch=20,shuffle=True, verbose=1, validation_split=0.3)   
print('test set')
model.evaluate(X_test, Y_test, batch_size=200,verbose=1) 
Epoch 86/100
42000/42000 [==============================] - 3s - loss: 0.3688 - val_loss: 0.2104
Epoch 87/100
42000/42000 [==============================] - 3s - loss: 0.3673 - val_loss: 0.2193
Epoch 88/100
42000/42000 [==============================] - 3s - loss: 0.3767 - val_loss: 0.2185
Epoch 89/100
42000/42000 [==============================] - 3s - loss: 0.3667 - val_loss: 0.2092
Epoch 90/100
42000/42000 [==============================] - 3s - loss: 0.3526 - val_loss: 0.2109
Epoch 91/100
42000/42000 [==============================] - 3s - loss: 0.3544 - val_loss: 0.2103
Epoch 92/100
42000/42000 [==============================] - 3s - loss: 0.3686 - val_loss: 0.2115
Epoch 93/100
42000/42000 [==============================] - 3s - loss: 0.3647 - val_loss: 0.2057
Epoch 94/100
42000/42000 [==============================] - 3s - loss: 0.3591 - val_loss: 0.2043
Epoch 95/100
42000/42000 [==============================] - 3s - loss: 0.3516 - val_loss: 0.2032
Epoch 96/100
42000/42000 [==============================] - 3s - loss: 0.3487 - val_loss: 0.2042
Epoch 97/100
42000/42000 [==============================] - 3s - loss: 0.3451 - val_loss: 0.2053
Epoch 98/100
42000/42000 [==============================] - 3s - loss: 0.3450 - val_loss: 0.2061
Epoch 99/100
42000/42000 [==============================] - 3s - loss: 0.3491 - val_loss: 0.2033
Epoch 100/100
42000/42000 [==============================] - 3s - loss: 0.3400 - val_loss: 0.2069
test set
 8800/10000 [=========================>....] - ETA: 0sOut[5]: 0.19544119497761131


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容