Keras 模型构建概览

Keras 模型构建概览

Keras 模型构建主要包括5个步骤: 定 义 ( d e f i n e ) , 编 译 ( c o m p i l e ) , 训 练 ( f i t ) , 评 估 ( e v a l u a t e ) , 预 测 ( p r e d i c t i o n ) \color{red}定义(define),编译(compile),训练(fit),评估(evaluate),预测(prediction) (define)(compile)(fit)(evaluate)(prediction)
在这里插入图片描述

1.1 定义模型

model = Sequential()
model.add(Dense(2))
  • 定义模型是 Keras 构建神经网络的第一步,这里由Sequential类生成了一个实例,然后添加了一个Dense类型的层(layer),参数2表示该层神经元的数量。
  • 一般层的添加顺序即是各层连接的顺序,也是数据流经模型被处理的顺序。
  • 模型添加的 第 一 层 必 须 指 定 输 入 参 数 的 数 量 \color{red}第一层必须指定输入参数的数量 ,指定方式由具体模型类型而定。

1.2 编译模型

model.compile(optimizer='sgd', loss='mse', metrics=['accuracy'])
  • 定义好模型之后我们需要通过编译(compile)来对学习过程进行配置,我们可以为模型的编译指定各类参数包括:优化器optimizer,损失函数loss,评估指标metrics等。
  • 编译的过程也是 Keras 将我们刚定义好的模型转化为底层平台(TensorFlow 或 Theano)结构描述过程,底层平台会负责后续的计算任务,GPU、CPU 的调度选择,分布式运行等。

1.3 训练模型

history = model.fit(X, y, batch_size=10, nb_epoch=100)
  • 编译后的模型就可开始训练(fit)了,fit 的过程可以简单的理解为就是通过测试数据来确定神经元间连接权重(weight)的过程。
  • 测试数据分为两部分,矩阵类型的输入数据X,和对应的数组类型的输出y数据。
    神经网络训练通常采用的是反向传播(Backpropagation)算法,因此我们需要指定训练周期nb_epoch和每次计算的数据量batch_size。
  • 训练完成后,history 会保存模型训练后的相关描述。

1.4 评估模型

loss, accuracy = model.evaluate(X, y)
  • 训练后的模型,我们需要对其性能进行评估,以此来确定训练效果是否达到了我们的预期。
  • evaluate方法的参数X,y与fit方法的数据类型是一样的,一般会选择用测试数据进行评估。

1.5 数据预测

predictions = model.predict(x)
  • 当模型的性能评估达到要求后,我们就可以用训练好的模型在新的数据上进行预测了。
  • predictions是预测返回的结果,数据格式与输出层的输出格式相同。

2. 一个完整的示例

# 简易多层感知神经网络示例
from keras.models import Sequential
from keras.layers import Dense
import numpy
# 加载,预处理数据集
dataset = numpy.loadtxt("XXXX", delimiter=",")#数据集需要修改,并与代码放置到同一个根目录下。
X = dataset[:,0:8]
Y = dataset[:,8]
# 1. 定义模型
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 2. 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 3. 训练模型
history = model.fit(X, Y, nb_epoch=100, batch_size=10)
# 4. 评估模型
loss, accuracy = model.evaluate(X, Y)
print("\nLoss: %.2f, Accuracy: %.2f%%" % (loss, accuracy*100))
# 5. 数据预测
probabilities = model.predict(X)
predictions = [float(round(x)) for x in probabilities]
accuracy = numpy.mean(predictions == Y)
print("Prediction Accuracy: %.2f%%" % (accuracy*100))

具体其他形式的神经网络参考:《Python深度学习》第五章-1(CNN简介)读书笔记

3. 总结

本篇主要介绍了 Keras 神经网络模型构建的主要步骤及其作用。我们通过一个简单的示例向您展示了 Keras 模型构建的整个过程。

参考

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keras是一个高级神经网络API,它在TensorFlow、Theano和CNTK等低级库之上提供了一个简单易用的用户界面。在Keras中,您可以使用Python编写高级神经网络模型,而无需编写低级的神经网络代码。下面是构建模型的基本步骤: 1.导入必要的库 首先,您需要导入所需的库,包括Keras、NumPy和Matplotlib等。 ```python import keras import numpy as np import matplotlib.pyplot as plt ``` 2.加载数据集 接下来,您需要加载数据集。您可以使用Keras内置的数据集,例如MNIST数字图像数据集。您也可以使用自己的数据集。 ```python from keras.datasets import mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() # 将图像数据转换为浮点数,并将其归一化为0到1之间的值 x_train = x_train.astype('float32') / 255. x_test = x_test.astype('float32') / 255. # 将标签数据转换为独热编码 y_train = keras.utils.to_categorical(y_train, 10) y_test = keras.utils.to_categorical(y_test, 10) ``` 3.定义模型 接下来,您需要定义模型Keras提供了一个Sequential模型,您可以使用它来堆叠各种神经网络层。例如,以下代码定义了一个具有两个密集层的模型: ```python from keras.models import Sequential from keras.layers import Dense model = Sequential() model.add(Dense(512, activation='relu', input_shape=(784,))) model.add(Dense(10, activation='softmax')) ``` 这个模型有两个密集层。第一层有512个神经元,使用ReLU激活函数。输入形状为(784,),因为MNIST图像大小为28x28像素,展平后为784个像素。第二层有10个神经元,使用Softmax激活函数,因为MNIST数据集有10个类别。 4.编译模型 接下来,您需要编译模型。在编译之前,您需要指定损失函数、优化器和评估指标。例如,以下代码将损失函数设置为交叉熵,优化器设置为Adam,并将评估指标设置为准确性: ```python model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ``` 5.训练模型 接下来,您需要训练模型。您可以使用fit()函数来训练模型。例如,以下代码将模型拟合到训练数据中,并使用批量大小为128、训练周期数为5: ```python history = model.fit(x_train, y_train, batch_size=128, epochs=5, validation_data=(x_test, y_test)) ``` 6.评估模型 接下来,您需要评估模型。您可以使用evaluate()函数来评估模型。例如,以下代码将模型评估为测试数据集: ```python score = model.evaluate(x_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1]) ``` 7.绘制模型的训练过程 最后,您可以使用Matplotlib库绘制模型的训练过程。例如,以下代码绘制了模型的训练损失和准确性: ```python plt.plot(history.history['loss'], label='train_loss') plt.plot(history.history['val_loss'], label='val_loss') plt.plot(history.history['accuracy'], label='train_acc') plt.plot(history.history['val_accuracy'], label='val_acc') plt.legend() plt.show() ``` 这是一个基本的Keras模型构建过程。您可以根据需要添加更多的层和参数,以获得更好的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值