问题描述
我在Python3中将Keras API与Tensorflow后端一起使用。
我正在创建一个多分类的多层感知器模型,其真正目的是创建分类特征嵌入向量作为模型的一部分,以便将其应用于其他机器学习问题。 model.summary()
在下面,我要提取的权重在第2层(dx_cat_embedding
)中:
Model: "functional_1"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
dx_cat (InputLayer) [(None,1)] 0
__________________________________________________________________________________________________
memid (InputLayer) [(None,1)] 0
__________________________________________________________________________________________________
dx_cat_embedding (Embedding) (None,1,25) 42325 dx_cat[0][0]
__________________________________________________________________________________________________
memid_embedding (Embedding) (None,50) 67943200 memid[0][0]
__________________________________________________________________________________________________
cont_variables (InputLayer) [(None,22)] 0
__________________________________________________________________________________________________
flatten (Flatten) (None,25) 0 dx_cat_embedding[0][0]
__________________________________________________________________________________________________
flatten_1 (Flatten) (None,50) 0 memid_embedding[0][0]
__________________________________________________________________________________________________
concatenate (Concatenate) (None,97) 0 cont_variables[0][0]
flatten[0][0]
flatten_1[0][0]
__________________________________________________________________________________________________
dense (Dense) (None,32) 3136 concatenate[0][0]
__________________________________________________________________________________________________
dense_1 (Dense) (None,16) 528 dense[0][0]
__________________________________________________________________________________________________
dense_2 (Dense) (None,4) 68 dense_1[0][0]
__________________________________________________________________________________________________
prediction (Dense) (None,1499) 7495 dense_2[0][0]
==================================================================================================
Total params: 67,996,752
Trainable params: 67,752
Non-trainable params: 0
__________________________________________________________________________________________________
我使用dx_cat_weights = model.layers[2].get_weights()[0]
来检索dx类别的权重并运行len(dx_cat_weights)
,我可以验证输出的大小与我的唯一输入的大小相同,而len(dx_cat_weights[0])
验证每个实例具有与之关联的25个权重的正确向量。
在此模型中,dx_cat
输入是类别值的标签编码表示。我是否可以假设model.layers[2].get_weights()[0]
按标签编码的类别值对权重输出进行排序?例如,model.layers[2].get_weights()[0][0]
对应于编码为0
的类别值标签,而model.layers[2].get_weights()[0][1693]
对应于编码为1693
的类别值标签吗?
我最终尝试创建一个dx_cat
值及其权重的人行横道,以便团队中的其他数据科学家可以为自己的项目映射这些经过预先训练的dx_cat
权重(并不总是将是神经网络。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)