【发布时间】:2019-12-23 18:56:39
【问题描述】:
我需要通过for循环创建多个密集层,迭代次数取决于标签的数量。我想为每个标签创建一个密集层。每个标签都有一组不同的特征,所以我想用每个密集层中的相应特征集分别预测每个标签。那可能吗?以下代码是我的尝试。
layers = []
for i in range(num_labels):
h1 = Dense(num_genes_per+10, kernel_initializer='normal', input_dim = num_genes_per, activation='relu')(inputs)
h2 = Dense(int(num_genes_per/2), kernel_initializer='normal', activation='relu')(h1)
output= Dense(1, kernel_initializer='normal', activation='linear')(h2)
layers.append(output)
merged_output = concatenate(layers, axis=1)
model = Model(inputs, merged_output)
每个 h2 的输出的形状为 [batch, 1],merged_output 的形状为 [batch, num_labels]。上面的代码有错误吗?
我知道它效率不高,但是如果我将不同的一组特征连接到一个输入张量中,并且只使用一个密集层同时预测所有标签,是否会损害预测精度?
【问题讨论】:
-
这没有多大意义。您正在创建并行密集层,每个密集层都应该预测一个标签。这就像有 n 个网络来预测 n 个标签,而且效率很低。如果你堆叠这些层,学习的网络容量将会增加。
-
@Mehraban 但是每个标签都有一组不同的特征,所以我想用每个密集层中的相应特征集分别预测每个标签。我知道它效率不高,但是如果我将不同的一组特征连接到一个输入张量中,并且只使用一个密集层来同时预测所有标签,它会损害预测精度吗?
-
你的意思是每个
h1层的输入都不一样? -
听起来像掩蔽可能会对您有所帮助。如果该功能不存在,请在其位置输入一个零并屏蔽所有零。
-
@Mehraban 是的,例如 h1 的 (feature1, feature2, feature3),h2 的 (feature4, feature5, feature6),h3.etc 的 (feature7, feature8, feature9)
标签: keras