📜  顺序层 keras (1)

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

顺序层Keras

介绍

Keras是一个高级深度学习API,它作为Python语言的一部分,可以轻松实现神经网络模型。顺序层Keras是Keras的一种模型类型,它被设计用来构建简单的线性神经网络模型,它是一个层次结构,其中每个层都被顺序地添加到模型中。

使用顺序层Keras构建简单的线性神经网络

在构建线性神经网络之前,我们需要先安装Keras。可以使用以下命令安装:

!pip install keras

现在让我们构建一个简单的线性神经网络,其中有两个密集层。第一层有32个神经元和输入形状为(784,1),第二层有10个神经元且采用softmax激活函数。

from keras.models import Sequential
from keras.layers import Dense

# 创建一个顺序模型
model = Sequential()

# 添加第一个密集层
model.add(Dense(32, activation='relu', input_dim=784))

# 添加第二个密集层
model.add(Dense(10, activation='softmax'))

# 编译模型
model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

在上面的代码中,我们首先导入了Sequential和Dense类。Sequential类是Keras模型的底层核心,它是一个容器,用于像堆积木一样有序添加各种层。Dense类是作为模型中的一个层类型,它用于创建全连接层。我们用add()方法添加了两个密集层,其中第一个层有32个神经元,采用ReLU激活函数。第二个层具有10个神经元,采用softmax激活函数,这是用于多分类任务的常用激活函数。我们使用compile()方法编译了模型,为模型设置了损失函数、优化器和评价指标。

训练模型

训练模型之前,我们需要预处理数据集。这里我们使用MNIST手写数字数据集,该数据集由60,000个训练样本和10,000个测试样本组成,每个样本是一张28×28像素的图像。

from keras.datasets import mnist
from keras.utils import to_categorical

# 加载数据集
(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 = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

在上面的代码中,我们首先从Keras的datasets模块中导入MNIST数据集。我们然后将每个图像像素转换为数字,并将它们规范化为0到1之间的值。这是一个很常见的可以提高模型训练效果的操作。接下来,我们将标记转换为独热编码。独热编码是将数字标记映射到二进制向量的常见方法。

现在我们可以开始训练模型了。这里我们使用fit()方法,该方法使用训练数据拟合模型。

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

在上面的代码中,我们使用batch_size设置每个batch的大小,以及epochs设置训练的轮数。verbose设置为1,这将输出每个epoch的详细信息和进度条。validation_data选项允许我们在训练过程中验证模型的性能。

评估模型

当我们训练模型后,我们需要评估模型的性能。我们可以使用evaluate()方法评估模型在测试集上的性能。

# 评估模型
score = model.evaluate(x_test, y_test, verbose=0)

print('Test loss:', score[0])
print('Test accuracy:', score[1])

在上面的代码中,我们使用evaluate()方法评估模型在测试集上的测试损失和测试准确性。损失值是指模型在进行预测时发生错误的程度。准确性是模型在进行预测时正确预测的比例。我们可以看到,这个简单的线性神经网络模型在测试集上的测试损失为0.3280,测试准确率为0.9090。

总结

在本文中,我们介绍了顺序层Keras和如何使用它来创建一个简单的线性神经网络模型。我们讨论了如何训练和评估模型,并使用MNIST手写数字数据集来展示这些技术。