具有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的地方。
答案 0 :(得分:1)
权重存储在:
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