为了账号安全,请及时绑定邮箱和手机立即绑定

我们如何从 Keras 线性回归模型中获取回归系数?

我们如何从 Keras 线性回归模型中获取回归系数?

眼眸繁星 2022-12-20 12:05:44
具有 k 个预测变量 X1、X2、...、Xk 和响应 Y 的多元线性回归模型可以写为 y = β0 + β1X1 + β2X2 + ··· βkXk + "。我按照此处的教程使用 tf.keras 进行基本回归。https://www.tensorflow.org/tutorials/keras/regression。是否可以输出 β 变量以便我可以检查它们对响应的贡献?顺便说一下,本教程让您构建的模型看起来像这样:def build_model():  model = keras.Sequential([    layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]),    layers.Dense(64, activation='relu'),    layers.Dense(1)  ])  optimizer = tf.keras.optimizers.RMSprop(0.001)  model.compile(loss='mse',                optimizer=optimizer,                metrics=['mae', 'mse'])  return model哪里len(train_dataset.keys())是9。
查看完整描述

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


查看完整回答
反对 回复 2022-12-20
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号