Keras 初步

来源:互联网 发布:华为java编程规范试题 编辑:程序博客网 时间:2024/06/15 17:50

简单介绍下 Keras 的基本操作。

创建模型

首先导入 Keras:

import keras

然后可以建立一个序贯模型:

from keras.models import Sequentialmodel = Sequential()

构造网络结构

构造网络结构

假设第一层网络是全联结(dense)的,输入是 28×28 的图像,也就是说输入层有 784 个节点,第一层隐含层有 500 个节点,并且使用 sigmoid 函数作为 activation function(另外还有 softplus, softsign, relu, tanh, hard_sigmoid, linear 等函数可以选择):

from keras.layers import Dense, Activationmodel.add(Dense(input_dim=28*28,output_dim=500))model.add(Activation('sigmoid'))

在构造第二层网络时,输入直接就是上一层的输出,因此只需要指定输出的维数即可,第三层网络同理:

model.add(Dense(output_dim=500))model.add(Activation('sigmoid'))model.add(Dense(output_dim=10))model.add(Activation('softmax'))

训练参数设置

接下来,进行一些训练参数的设置:

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

其中,loss 指定了损失函数,在这里(多分类任务)中指定交叉熵为损失函数。
Optimizer 指定优化方法,除了 adam 之外,还可以选 SGD, RMSprop, Adagrad, Adadelta, Adam, Adamax, Nadam 等等。

训练

model.fit(x_train, y_train, batch_size=100, nb_epoch=20)

其中前两个参数传入训练样本和它们的标记,batch_size 表示每次训练的 batch 大小,如果是 1 就是随机梯度下降,如果是所有的样本个数,就是原始的梯度下降法。nb_epoch 表示 epoch 的次数,一个 epoch 就是遍历一次所有的 batch. 举例来说,有 50000 个数据,那么就会分为 500 个 batch,当把这 500 个 batch 遍历一轮,就是一个 epoch,需要重复这样做 20 次。

测试

当训练完之后,就可以用它进行测试了。

''' case 1 '''score = model.evaluate(x_test, y_test)print("Total loss on testing set: ", score[0])print("Accuracy on testing set: ", score[1])''' case 2 '''result = model.predict(x_test)

使用 GPU

有两种方法可以让你的电脑使用 GPU 来为计算加速:

  • 在命令行中运行 THEANO_FLAGS=device=gpu0 python YourCode.py
  • 在你的代码中加入:

    import osos.environ["THEANO_FLAGS"] = "device=cpu"
原创粉丝点击