1 回答

TA贡献1811条经验 获得超6个赞
权重存储在:
model.layers[n].weights
带有layers列表和n模型中的图层索引。
在您的示例中,因为输入形状是(9,)
>>> len(model.layers[0].weights)
2
>>> model.layers[0].weights[0].shape
TensorShape([9, 64])
>>> model.layers[0].weights[1].shape
TensorShape([64])
为了解释这些,假设第一层是h = ReLU(Ax+b)用x一个向量计算(9,)然后A是一个形状矩阵(9,64)和b一个形状向量(64,),h还有一个形状向量(64,)。因此,model.layers[0].weights是两个权重张量的列表[A, b]。
它不是线性回归。如果你想要它,你需要制作一个更简单的模型:
def build_model():
model = keras.Sequential([
layers.Dense(1, input_shape=[len(train_dataset.keys())])
])
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae', 'mse'])
return model
然后,用数据训练后,model.layers[0].weights[0]会有形状(9,1),也就是你的 β1, β2, ..., βk; 并且model.layers[0].weights[1]会有形状(1,),这是你的 β0
添加回答
举报