一, 简介

  • Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。
  • 允许简单而快速的原型设计(由于用户友好,高度模块化,可扩展性)。
  • 同时支持卷积神经网络和循环神经网络,以及两者的组合。
  • 在 CPU 和 GPU 上无缝运行
  • Keras 兼容的 Python 版本: Python 2.7-3.6
  • Keras 的核心数据结构是 model,一种组织网络层的方式。最简单的模型是 Sequential 顺序模型,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用 Keras 函数式 API,它允许构建任意的神经网络图。

二,安装与导库

1,安装

pip install Keras

2,导库

在使用tensorflow2.0时,遇到了这个问题:
在这里插入图片描述

使用TensorFlow的实现,tf.keras。这个适用于TF 2。
例如你需要使用tf.keras,必须确保使用正确的导入:

from tensorflow import keras
# 而不是直接使用:import keras

在要使用keras下的其他模块时:

from tensorflow.keras import layers
# 而不是使用 from keras import layers

三,Keras Sequential 顺序模型

1,创建一个 Sequential 模型

  • 可以通过将网络层实例的列表传递给 Sequential 的构造器,来创建一个 Sequential 模型:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])
  • 也可以简单地使用.add()方法将各层添加到模型中:
model = Sequential()
model.add(Dense(32, input_dim=784))  # 全连接层, 现在模型就会以尺寸为 (*, 784) 的数组作为输入,
# 其输出数组的尺寸为 (*, 32)
model.add(Activation('relu'))

2, 指定输入数据的尺寸

模型需要知道它所期望的输入的尺寸。出于这个原因,顺序模型中的第一层(且只有第一层,因为下面的层可以自动地推断尺寸)需要接收关于其输入尺寸的信息。有几种方法来做到这一点:

  • 传递一个 input_shape 参数给第一层。它是一个表示尺寸的元组 (一个由整数或 None 组成的元组,其中 None 表示可能为任何正整数)。在 input_shape 中不包含数据的 batch 大小。
  • 某些 2D 层,例如 Dense,支持通过参数input_dim 指定输入尺寸,某些 3D 时序层支持input_diminput_length参数。
  • 如果你需要为你的输入指定一个固定的batch大小(这对 stateful RNNs 很有用),你可以传递一个 batch_size 参数给一个层。如果你同时将batch_size=32input_shape=(6, 8) 传递给一个层,那么每一批输入的尺寸就为(32,6,8)
    因此,下面的代码片段是等价的:
model = Sequential()
model.add(Dense(32, input_shape=(784,)))
model = Sequential()
model.add(Dense(32, input_dim=784))

3,模型编译

在训练模型之前,需要配置学习过程,这是通过compile方法完成的。它接收三个参数:

  • 优化器optimizer。它可以是现有优化器的字符串标识符,如 rmspropadagrad,也可以是 Optimizer 类的实例。详见:optimizers
  • 损失函数loss,模型试图最小化的目标函数。它可以是现有损失函数的字符串标识符,如 categorical_crossentropymse,也可以是一个目标函数。详见:losses
  • 评估标准 metrics。对于任何分类问题,你都希望将其设置为 metrics = ['accuracy']。评估标准可以是现有的标准的字符串标识符,也可以是自定义的评估标准函数。
# 多分类问题
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# 二分类问题
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

# 均方误差回归问题
model.compile(optimizer='rmsprop',
              loss='mse')

# 自定义评估标准函数
import keras.backend as K

def mean_pred(y_true, y_pred):
    return K.mean(y_pred)

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy', mean_pred])

4,模型训练

Keras 模型在输入数据和标签的 Numpy 矩阵上进行训练。为了训练一个模型,通常会使用 fit 函数。

# 对于具有 2 个类的单输入模型(二进制分类):

model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

# 生成虚拟数据
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(2, size=(1000, 1))

# 训练模型,以 32 个样本为一个 batch 进行迭代
model.fit(data, labels, epochs=10, batch_size=32)

参考资料:
Keras中文文档:https://keras.io/zh/

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐