什么是Keras的顺序模型(Sequential Model)?
- 由神经网络层顺序堆叠而成,不能存在分支
- 每个神经网络层只有一个输入和一个输出
- 神经网络层不能做图层共享(layer sharing)
在创建Keras的层,若没有指定Keras.Input,则在创建层时,不会有权重,因为还不知道输入的形状。例如:
layer = layers.Dense(3)
print(layer.weights)
[ ]
一旦确认了输入的形状,Keras的层的权重会得到初始化,例如:
layer = layers.Dense(3)
print(layer.weights) #未知张量形状
x = tf.ones((1,3))
y = layer(x)
print(layer.weights) # 已知输入张量形状
[<tf.Variable 'dense/kernel:0' shape=(3, 3) dtype=float32, numpy=
array([[-0.95832396, 0.8678112 , 0.4540038 ],
[-0.24604774, -0.6049447 , 0.29405165],
[-0.9163108 , 0.4071493 , -0.80502915]], dtype=float32)>, <tf.Variable 'dense/bias:0' shape=(3,) dtype=float32, numpy=array([0., 0., 0.], dtype=float32)>]
keras模型的权重,也是在第一次能确认输入张量形状时,才创建。一旦模型创建,便可以调用model.summary()来获得模型结构的描述性输出
网友评论