猿问

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

具有 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。


眼眸繁星
浏览 190回答 1
1回答

杨魅力

权重存储在:model.layers[n].weights带有layers列表和n模型中的图层索引。在您的示例中,因为输入形状是(9,)>>> len(model.layers[0].weights)2>>> model.layers[0].weights[0].shapeTensorShape([9, 64])>>> model.layers[0].weights[1].shapeTensorShape([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
随时随地看视频慕课网APP

相关分类

Python
我要回答