Keras深度学习框架第二讲:Sequential模型

1、Sequential模型简介

Sequential模型是一种非常基础且常用的模型结构。它实际上是一种线性的、顺序的模型,由一系列层按照顺序堆叠而成。每个层的输入都来自上一层的输出,形成了一种线性的堆叠结构。

Sequential模型适用于简单的线性堆叠网络,如全连接神经网络。然而,通过堆叠不同种类的层,Sequential模型也可以构建出更复杂的神经网络,如卷积神经网络(CNN)和循环神经网络(RNN)等。

在Sequential模型中,每一层都拥有一个唯一的输入tensor和输出tensor。通过不同层的堆叠,可以构建出神经网络。这种模型结构易于理解和调试,是初学者学习神经网络和深度学习的一个很好的起点。

要创建一个Sequential模型,可以使用tf.keras.Sequential()函数。然后,可以使用add()方法向模型中添加层,或者使用其他方式来构建模型的结构。一旦模型的结构定义好,就可以使用compile()方法来配置模型的学习过程,包括指定优化器、损失函数和评估指标等。

2、使用Sequential模型

2.1 配置

import keras
from keras import layers
from keras import ops

2.2 Sequential模型的适用场合

当使用顺序堆叠的层,且每一层都恰好有一个输入tensor和一个输出tensor时,Sequential模型是合适的。

# Define Sequential model with 3 layers
model = keras.Sequential(
    [
        layers.Dense(2, activation="relu", name="layer1"),
        layers.Dense(3, activation="relu", name="layer2"),
        layers.Dense(4, name="layer3"),
    ]
)
# Call model on a test input
x = ops.ones((3, 3))
y = model(x)

或者等效表达为 

# Create 3 layers
layer1 = layers.Dense(2, activation="relu", name="layer1")
layer2 = layers.Dense(3, activation="relu", name="layer2")
layer3 = layers.Dense(4, name="layer3")

# Call layers on a test input
x = ops.ones((3, 3))
y = layer3(layer2(layer1(x)))

Sequential模型在以下情况下不适用:

  1. 你的模型有多个输入或多个输出。Sequential模型只支持单一输入和单一输出。

  2. 你的任何一层有多个输入或多个输出。在Sequential模型中,每一层都只能有一个输入tensor和一个输出tensor。

  3. 你需要进行层共享。Sequential模型不支持层之间的复杂连接,比如将同一个层应用于模型的不同部分。

  4. 你想要非线性的拓扑结构。例如,你希望在模型中实现残差连接(residual connections)或多分支模型(multi-branch models),这些结构无法在Sequential模型中直接实现。

3、如何使用Sequential模型

3.1 构建Sequential模型

你可以通过向Sequential构造函数传递一个层(layer)列表来创建一个Sequential模型。在Keras中,这通常是通过将多个层实例添加到列表中,然后将这个列表传递给Sequential类来实现的。

model = keras.Sequential(
    [
        layers.Dense(2, activation="relu"),
        layers.Dense(3, activation="relu"),
        layers.Dense(4),
    ]
)

在Keras中,当你创建了一个Sequential模型后,你可以通过layers属性来访问这个模型中的各个层。layers属性是一个Python列表,包含了模型中按添加顺序排列的所有层实例。

from keras.models import Sequential  
from keras.layers import Dense  
  
# 创建一个Sequential模型  
model = Sequential([  
    Dense(64, activation='relu', input_shape=(784,)),  
    Dense(10, activation='softmax')  
])  
  
# 访问模型的层  
for layer in model.layers:  
    print(layer.name)  # 打印层的名字  
    print(layer.output_shape)  # 
### Sequential模型概述 Sequential模型是一种线性的堆叠结构,允许一层接一层地构建神经网络。这种架构简单直观,在许多应用场景中表现出色。该模型特别适合于那些层之间不存在共享权重的情况。 #### 应用场景 Sequential模型广泛应用于多种领域,包括但不限于: - **时间序列预测** - **图像分类**[^1] - **自然语言处理** 由于其易于理解和实现的特点,Sequential模型成为初学者入门深度学习的理想选择之一。 #### 实现方式 下面展示如何利用Keras框架下的`tf.keras.Sequential()`接口快速搭建一个简单的全连接前馈神经网络用于二元分类任务: ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers # 定义顺序模型 model = keras.Sequential([ layers.Dense(64, activation='relu', input_shape=(784,)), # 输入层到隐藏层 layers.Dropout(0.5), # Dropout层防止过拟合 layers.Dense(64, activation='relu'), # 隐藏层 layers.Dense(1, activation='sigmoid') # 输出层 ]) # 编译模型 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 假设已有训练数据X_train,y_train以及验证数据X_val,y_val history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val)) ``` 此代码片段展示了如何创建一个多层感知器(MLP),其中包含了两个带有ReLU激活函数的密集连接层,并加入了Dropout机制以减少过拟合现象的发生。最后一层采用Sigmoid激活函数来进行概率输出,适用于二分类问题。编译阶段指定了Adam优化算法和交叉熵损失函数作为评价标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MUKAMO

你的鼓励是我们创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值