深度学习框架Keras学习系列(三):Keras神经网络框架

Keras官方网站

Introduction

Keras是一个高级的神经网络API,用Python实现,并可以基于TensorFlow,CNTK与Theano等计算框架运行。

Keras的核心是神经网络,它的意义主要在于使得神经网络的实现更加方便快捷,因此它本质上是在一些知名的计算框架上进行了一层简化的封装,只对Keras使用者暴露出一些简单易用的接口,使用者可以很快了解并上手实现复杂的神经网络架构,而不用关心底层的实现细节。

Keras作为一个深度学习的库,有以下显著特征:

  • 简单、快速地构造原型(兼具用户友好性、模块性以及可扩展性)
  • 支持卷积网路和循环网络,包括二者的结合体
  • 可以无缝在CPU和GPU上运行

Installation

首先需要选择Keras的底层框架:TensorFlow,CNTK或Theano。(鉴于Bengio已经宣布将停止继续维护Theano,故推荐使用Google的TensorFlow),并进行安装,然后再安装Keras的库。另外,Keras默认以TensorFlow作为底层计算框架,如果使用CNTK或者Theano的话,则需要在Keras的配置文件中进行修改

具体参考官方说明

Fast Overview

我们知道,神经网络中最基本的构成单元是神经元(neuron),而若干神经元可以组成一个层(layer),若干层(输入层+隐藏层+输出层)就构成了一个神经网络的原型。而Keras中最核心的数据结构就是model,我们便是基于model来进行神经网络层(layers)的组装。而model最简单的一种类型便是Sequential,它对层进行线性堆叠。

通过以下代码便能实例化一个Sequential:

from keras.models import Sequential

model = Sequential()

而要往Sequential上面叠加层,只需使用.add()方法:

from keras.layers import Dense

model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))

如上是先后加了两层。第一层是Dense层(全连接层),共64个神经元(units=64),激活函数为ReLU(activation=’relu’),输入的是维度为1*100的列向量(input_dim=100)。第二层是也是一个Dense层,10个神经元,激活函数为softmax,输入的是前一层的输出向量,即维度为1*64的列向量。

第一层默认为神经网络的隐藏层第一层,故需要指定输入向量的维度,即输入的特征向量的维度。

Once your model looks good, configure its learning process with .compile():

model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

有需要的话,我们也可以自定义优化器(optimizer)。Keras最核心的设计理念就是在最大化保证易用性的同时,提供给使用者充分的自由去对模型进行全面地控制。

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

这里,我们的损失函数选择的是交叉熵(loss=keras.losses.categorical_crossentropy),优化器选择的是学习率为0.01,动量为0.9的随机梯度下降(optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9),并启用Nesterov动量(不同的优化方法可参考这里)。

现在我们就可以以batch的形式来迭代训练我们的模型了:

# x_train and y_train are Numpy arrays --just like in the Scikit-Learn API.

model.fit(x_train, y_train, epochs=5, batch_size=32)

我们也可以手动地把batch分批喂给模型训练:

model.train_on_batch(x_batch, y_batch)

一行代码便能获得训练好的模型的性能评估:

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

让模型对新的数据进行预测:


                
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值