本题使用以下代码:
Xtrain = np.random.rand(400,1)
ytrain = f(Xtrain)
Xval = np.random.rand(200,1)
yval = f(Xval)
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation='relu'),
#tf.keras.layers.Dense(10, activation='relu'),
tf.keras.layers.Dense(1, activation='relu')
])
model.compile(optimizer='adam',
loss=tf.keras.losses.MeanSquaredError()
)
model.fit(Xtrain, ytrain, epochs=500, verbose=0)
使用命令model.layers[0].get_weights()我得到以下输出:
[array([[-0.43412966, -0.51346564, -0.14263666, 0.8693182 , -0.4930619 ,
1.249465 , -0.3924656 , -0.48984256, -0.55827504, 0.11134321]],
dtype=float32),
array([ 0. , 0. , 0. , 0.34663308, 0. ,
0.36201355, 0. , 0. , 0. , -0.11139664],
dtype=float32)]
并使用model.layers[1].get_weights()我得到这个:
[array([[-0.04339373],
[ 0.19533908],
[-0.2295354 ],
[ 0.903574 ],
[-0.17581558],
[ 0.7272965 ],
[-0.69347996],
[ 0.02008992],
[-0.30351916],
[-0.29846227]], dtype=float32),
array([0.29466572], dtype=float32)]
我不明白为什么第 0 层(列表中的第二个数组)的传出权重与第model.layers[0].get_weights()1 层(列表中的第一个数组)的传入权重不匹配model.layers[1].get_weights()。为什么第 1 层有一个传出权重?这不应该是最后一层吗?