The Sequential Model

The Sequential Model

线性堆叠模型

01 设置

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

02 什么时候使用线性堆叠模型

单只有一个输入和一个输出的时候,典型的添加方式可以如下所示:

# 只含一个Dense,为了说明维度
model=keras.Sequential([layers.Dense(2,activation='relu',name='layer1')])
x=tf.ones([3,3])
y=model(x)
print(y)
tf.Tensor(
[[0. 0.]
[0. 0.]
[0. 0.]], shape=(3, 2), dtype=float32)

说明一下输入输出的形状关系:
image

# 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 = tf.ones((3, 3))
y = layer3(layer2(layer1(x)))

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

  • 有多个输入或多个输出
  • 层有多个输入或多个输出
  • 层共享
  • 非线性拓扑网络(如:残差网络、多分支网络)

03 创建一个线性堆叠网络

# 传递一个layers列表构建
model = keras.Sequential(
[
layers.Dense(2, activation="relu"),
layers.Dense(3, activation="relu"),
layers.Dense(4),
]
)
# 可以通过model.layers访问
model.layers
[<keras.layers.core.dense.Dense at 0x28f9dbce7c0>,
<keras.layers.core.dense.Dense at 0x28f9dbce3a0>,
<keras.layers.core.dense.Dense at 0x28f9dbce970>]
# 通过add方法,逐个添加层
model = keras.Sequential()
model.add(layers.Dense(2, activation="relu"))
model.add(layers.Dense(3, activation="relu"))
model.add(layers.Dense(4))
# 通过pop方法删除层
model.pop()
print(len(model.layers))
2
# Sequential() 接受输入参数'name',在tensorboard很有用
model = keras.Sequential(name="my_sequential")
model.add(layers.Dense(2, activation="relu", name="layer1"))
model.add(layers.Dense(3, activation="relu", name="layer2"))
model.add(layers.Dense(4, name="layer3"))

04 可以事先指定模型输入形状

layer = layers.Dense(3)
layer.weights
# 因为没指定输入形状,所以也不知道权重(参数)有多少个
[]
x=tf.ones([1,4])
y=layer(x)
layer.weights
[<tf.Variable 'dense_7/kernel:0' shape=(4, 3) dtype=float32, numpy=
array([[-0.21379423, -0.24007618, -0.35851455],
[ 0.3631029 , -0.6891039 , 0.63587666],
[-0.3662386 , 0.18915188, 0.66558635],
[ 0.88581955, 0.18579733, -0.22770852]], dtype=float32)>,
<tf.Variable 'dense_7/bias:0' shape=(3,) dtype=float32, numpy=array([0., 0., 0.], dtype=float32)>]
posted @   Vandaci  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示