Keras初探(一)

尝试写一下Keras的一些东西,算是必要的时候能备忘一下吧!希望大家多提提意见,毕竟我文笔太差,不太会写东西,留言私信都好。
以下大部分内容来自Keras的教程,有兴趣的同学可以看看原文,链接如下:
https://elitedatascience.com/keras-tutorial-deep-learning-in-python

一、安装Keras

Keras并不能直接用于构建模型,它需要后端支持。
Keras 可以基于两个Backend,一个是 Theano,一个是 Tensorflow。如果我们选择Theano作为Keras的Backend, 那么Keras就用 Theano 在底层搭建你需要的神经网络;同样,如果选择 Tensorflow ,Keras 就使用 Tensorflow 在底层搭建神经网络。
所以我们需要先安装tensorflow,其实安装tensorflow还是蛮简单的,这里不多说了。
安装Keras其实就是一句话嘛!

sudo pip3 install keras

要修改后端就修改~/.keras/keras.json文件中的backend。

{
    "image_dim_ordering": "tf",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "theano"
}

那么开始喽!

二、预置知识

我们需要学习一些机器学习和python的基础知识,下面给两个链接,有兴趣的同学可以先去看看。
Understanding of essential machine learning concepts
Python programming skills
其实根据我的经验,一遍动手做,一遍查文档学得会比较快。

三、超简单的Keras例子

这个例子共分为5个步骤:

1、加载数据
2、定义模型
3、编译模型
4、训练模型
5、评估模型

我们一步步来。

3.1 实验数据

我们的研究对象是UCI上面的一个数据集。
Pima Indians onset of diabetes dataset

  • Dataset File
  • Dataset Details
    我们把数据下载下来之后保存为
    pima-indians-diabetes.csv
    我们先加载一下要用到的包。
from keras.models import Sequential
from keras.layers import Dense
import numpy as np 
np.random.seed(2018)

接着我们加载实验数据,数据分为9列,其中第九列是0或1,表示患病与否。
我们使用numpy的loadtxt加载数据,具体参见之前的教程。这里注意一下切片操作,X = dataset[:,0:8],是不含第9列的,即取到[8]之前(0-7列)。而Y = dataset[:,8]取得就是第九列。

#load prima indians dataset
dataset = np.loadtxt("pima-indians-diabetes.csv", delimiter=",")
#split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]

3.2定义模型

我们来定义一个非常简单的模型。这个模型是一些layers一个接一个连接在一起。先来确定一下输入inputs。我们把input_dim设置为8,一共八个参数嘛。后面的工作很简单,因为在Sequential model中dense会默认设置除第一层外的各层的inputs,毕竟是全连接嘛!

# create model
model = Sequential()
model.add(Dense(12,input_dim = 8,activation = 'relu'))
model.add(Dense(10,activation = 'relu'))
model.add(Dense(8,activation = 'relu'))
model.add(Dense(1,activation = 'sigmoid'))

我们定义了四层layer,除最后一层外我们都采用relu激活函数,这样收敛较快(sigmod函数两端都很平,梯度太小了)。

3.3编译模型

Keras编译模型非常简单,只需要一句话。

#Compile model
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

这里我们设置优化器为adam。

3.4训练模型

训练模型使用fit函数。

#Fit the model
model.fit(X,Y,epochs=150,batch_size=10)

我们把轮数设为150,batch_size为每次处理record数量,内存大可以多设置些。

3.5评估模型

简便起见,这里我们仍然使用X,Y作为评估数据,实际操作事可以利用sklearn的数据集划分。

#evaluate the model
scores = model.evaluate(X,Y)
print("\n%s:%.2f%%" % (model.metrics_names[1],scores[1]*100))

四、完整代码

连注释在内一共20多行代码,可谓非常简单了。希望这个简单的例子可以帮助大家入门。

from keras.models import Sequential
from keras.layers import Dense
import numpy as np 
np.random.seed(2018)

#load prima indians dataset
dataset = np.loadtxt("pima-indians-diabetes.csv", delimiter=",")
#split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]

# create model
model = Sequential()
model.add(Dense(12,input_dim = 8,activation = 'relu'))
model.add(Dense(10,activation = 'relu'))
model.add(Dense(8,activation = 'relu'))
model.add(Dense(1,activation = 'sigmoid'))

#Compile model
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

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

推荐阅读更多精彩内容