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

ted*_*ddy 2 python linear-regression keras tf.keras

具有 k 个预测变量 X1, X2, ..., Xk\n 和响应 Y 的多元线性回归模型可以写为 y = \xce\xb20 + \xce\xb21X1 + \xce\xb22X2 + \xc2\xb7\xc2 \xb7\xc2\xb7\xce\xb2kXk + ".

\n\n

我按照此处的教程使用 tf.keras 进行基本回归。https://www.tensorflow.org/tutorials/keras/regression。是否可以输出 \xce\xb2 变量,以便我可以检查它们对响应的贡献?

\n\n

顺便说一下,教程让您构建的模型看起来像这样:

\n\n
def build_model():\n  model = keras.Sequential([\n    layers.Dense(64, activation=\'relu\', input_shape=[len(train_dataset.keys())]),\n    layers.Dense(64, activation=\'relu\'),\n    layers.Dense(1)\n  ])\n\n  optimizer = tf.keras.optimizers.RMSprop(0.001)\n\n  model.compile(loss=\'mse\',\n                optimizer=optimizer,\n                metrics=[\'mae\', \'mse\'])\n  return model\n
Run Code Online (Sandbox Code Playgroud)\n\n

9.在哪里len(train_dataset.keys())

\n

adr*_*tam 5

权重存储在:

\n\n
model.layers[n].weights\n
Run Code Online (Sandbox Code Playgroud)\n\n

带有模型中的layers列表和图层索引。n

\n\n

在您的示例中,因为输入形状是(9,)

\n\n
>>> len(model.layers[0].weights)\n2\n>>> model.layers[0].weights[0].shape\nTensorShape([9, 64])\n>>> model.layers[0].weights[1].shape\nTensorShape([64])\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了解释这些,假设第一层是h = ReLU(Ax+b)用 的x向量进行计算,(9,)然后A是一个形状的矩阵(9,64)b一个形状的向量(64,),以及h一个形状的向量(64,)。因此,model.layers[0].weights是两个权重张量的列表[A, b]

\n\n

不是线性回归。如果你想要这样,你需要制作一个更简单的模型:

\n\n
def build_model():\n  model = keras.Sequential([\n    layers.Dense(1, input_shape=[len(train_dataset.keys())])\n  ])\n\n  optimizer = tf.keras.optimizers.RMSprop(0.001)\n\n  model.compile(loss='mse',\n                optimizer=optimizer,\n                metrics=['mae', 'mse'])\n  return model\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后,经过数据训练后,model.layers[0].weights[0]将具有形状(9,1),即您的 \xce\xb21, \xce\xb22, ..., \xce\xb2k; 并且model.layers[0].weights[1]将具有形状(1,),这是您的 \xce\xb20

\n