我想使用Keras中的模型权重和偏置手动预测数据(回归任务)(即Z = f(WX+B),其中Z是层的输出,W是权重矩阵,X是输入向量,B是偏置向量)。
我的模型架构如下:
model = Sequential()
model.add(Dense(207, input_dim = 173, activation = 'relu'))
model.add(Dense(207, activation = 'relu'))
model.add(Dense(207, activation = 'relu'))
model.add(Dense(240))
字符串
我也完成了模型的训练。
我已经尝试使用以下方法提取权重和偏差:
layer_num = 1
layer_weights = model.layers[layer_num-1].get_weights()[0]
layer_biases = model.layers[layer_num-1].get_weights()[1]
型
其中layer_num
是层数(对于我的模型,layer_num
从1到4)。然而,我不知道如何为我的测试集x_test
手动执行Z = f(WX+B)。
使用这种手动方法,我想比较它的结果和model.predict
,以及x_test
的每个示例/行的预测计算时间(但我想我可以自己计算出最后一部分)。
编辑1:我提到我可以自己计算每个示例/行的计算时间,但如果您也能帮助我,我将非常感激。
1条答案
按热度按时间bbmckpt71#
对于一个密集层,当你调用
get_weights
方法时,你会得到一个列表,它的第一个元素是权重矩阵W
,第二个元素是偏置b
:字符串
假设你有一个形状为
[batch, 173]
的测试数据矩阵X
。然后你可以写一个如下的代码片段来获得所有的权重和偏置:型
有了它们,我们可以定义我们的功能:
型
然后,您可以使用
predict
函数手动预测测试X
:型