在Keras中,是否可以对输入数据进行聚类,然后根据该聚类将数据馈送到不同的子网?

时间:2019-04-11 05:41:50

标签: tensorflow keras

基本上,我想做的是:

  • 对输入数据进行一些基本的聚类,例如K-均值。

  • 获取输入样本的集群成员资格。

  • 为每个群集训练一个单独的深度神经网络子模型。

下面是该想法的基本示意图。 Visualization of my idea

是否可以通过使用单个keras模型来做到这一点?

我尝试使用sklearn KMeans将输入数据分离到集群中,然后在每个集群上训练一个单独的Keras模型,但是这种方法使以后很难计算测试误差,因为我必须获得测试每个群集的错误,然后手动计算总体错误。

1 个答案:

答案 0 :(得分:0)

我认为问题在于您将数据分为三个组,并希望使用模型来学习每个组的不同分布。我有一些粗略的想法。

  1. 您可以将聚类索引作为每个组的标签,并同时适合此标签和您的原始目标。喜欢:

    output1 =密集(cluster_numbers,activation ='softmax')[x)

    output2 =密集(output_dimensions,activation ='softmax')(x)

  2. 或者,如果您的数据是根据原始目标进行聚类的,并且它们是互斥的,那么您还可以使用一系列参数层来输出结果。但是,这将使您的模型非常庞大。喜欢:

    output = [簇编号中_的密集(output_dimensions,激活='softmax')(x)]