神经网络分类特征嵌入转移学习:将输入与权重相关联

问题描述

我在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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...