📜  Keras-深度学习概述(1)

📅  最后修改于: 2023-12-03 15:32:28.068000             🧑  作者: Mango

Keras-深度学习概述

什么是Keras?

Keras是一个开源的深度学习框架,它采用了用户友好的API,能够方便快捷地构建和训练深度学习模型。Keras可以作为高级神经网络API,以TensorFlow、CNTK或者Theano为后端来运行。

Keras的特点
  • 简单易用:Keras提供了简单易用、模块化且可扩展的API,使构建深度学习模型变得易如反掌。
  • 支持多种后端:Keras支持多种深度学习框架作为其后端,并且使用方式均为同一标准,无需改变API使用方式。
  • 适用范围广:Keras可以用于各种应用场景,包括图像识别、语音识别、自然语言处理等。
  • 经过验证:Keras已被广泛使用和认可,被联合国教科文组织、斯坦福大学等多个机构采用。
Keras的核心概念

Keras的核心概念包括“层”(Layer)、“模型”(Model)和“损失函数”(Loss Function)。

  • 层:层是构建Keras模型的基本单元,是网络中数据的输入、输出的映射。每一层将数据从上一层传入,经过一定的计算后输出到下一层。Keras中提供了丰富的层类型,包括全连接层、卷积层、池化层、循环层等。
  • 模型:模型是由多个层组成的有向无环图,Keras的核心模型类型是Sequential(线性模型)和Model(可复杂模型)。模型本质上是一个函数,可以对输入数据进行输出预测或者提取特征。
  • 损失函数:损失函数用于衡量模型预测结果与实际结果的差异,目标是最小化损失函数的值。常见的损失函数包括均方误差、交叉熵等。

Keras还提供其他重要的概念,如“优化器”(Optimizer)、“学习率衰减”(Learning Rate Decay)等。

Keras应用实例

下面是使用Keras构建Hello World程序的代码,该程序是一个基于MNIST数据集的手写数字识别模型。

from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
from keras.datasets import mnist
import numpy as np

# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 数据预处理
x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
y_train = np.eye(10)[y_train]
y_test = np.eye(10)[y_test]

# 建立模型
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(10))
model.add(Activation('softmax'))

# 定义优化器
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)

# 编译模型,定义损失函数和优化器
model.compile(loss='categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])

# 训练模型
model.fit(x_train, y_train,
          batch_size=128,
          epochs=20,
          validation_data=(x_test, y_test))

# 评估模型
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

代码解释:

  • 加载MNIST数据集,并进行数据预处理,将数据转化为0-1的值域。
  • 建立神经网络模型,包括两个全连接层和一个输出层,最后通过激活函数softmax进行输出分类概率。
  • 定义优化器为随机梯度下降(SGD),并编译模型,定义损失函数为分类交叉熵。
  • 训练模型,设置批大小(batch_size)为128,训练轮数(epochs)为20,并在每轮结束后验证模型性能。
  • 评估模型在测试集上的损失值和准确率,并输出结果。
总结

Keras是一个简单易用、可扩展的深度学习框架,它提供了高层次的API和丰富的模型构建模块,同时支持多种常见的深度学习网络。Keras在实际应用中表现出色,并被广泛采用。