【问题标题】:RNN : understanfingConcatenating layersRNN:了解连接层
【发布时间】:2019-12-29 08:00:17
【问题描述】:

我正在尝试理解 tensorflow keras 中层的连接。 下面我画了我认为是 2 个 RNN 层的串联 [Spare for picture清晰] 和输出

这里我试图连接两个 RNN 层。一层具有某个时间序列中患者的纵向数据[整数值],另一层具有其他时间序列的相同患者的详细信息以及分类输入。

我不希望这两个不同的时间序列混淆,因为它是医学数据。所以我正在尝试这个。但在此之前,我想确定我所绘制的是否是两层连接的含义。 下面是我的代码。它似乎运作良好,但我想确认我绘制的内容和实施的内容是否正确。

#create simpleRNN with one sequence of input

first_input = Input(shape=(4, 7),dtype='float32')
simpleRNN1 = layers.SimpleRNN(units=25,bias_initializer= initializers.RandomNormal(stddev=0.0001),
                           activation="relu",kernel_initializer= "random_uniform")(first_input)

#another layer of RNN
second_input = Input(shape=(16,1),dtype='float32')
simpleRNN2 = layers.SimpleRNN(units=25,bias_initializer= initializers.RandomNormal(stddev=0.0001),
                           activation="relu",kernel_initializer= "random_uniform")(second_input)

#concatenate two layers,stack dense layer on top
concat_lay = tf.keras.layers.Concatenate()([simpleRNN1, simpleRNN2]) 
dens_lay = layers.Dense(64, activation='relu')(concat_lay)
dens_lay = layers.Dense(32, activation='relu')(dens_lay)
dens_lay = layers.Dense(1, activation='sigmoid')(dens_lay)

model = tf.keras.Model(inputs=[first_input, second_input], outputs= [dens_lay])
model.compile(loss='binary_crossentropy', optimizer='adam',metrics=["accuracy"],lr=0.001)
model.summary()

【问题讨论】:

  • 那么第一个问题到底是什么?是如何使用 Keras 实现照片中的内容吗?如果是这样,您能否添加更多细节(图片不太清楚)。例如,您是否需要对两个 RNN 产生的输出序列进行逐项连接?
  • 基本上,我试图理解 2 层的连接是什么。这是否意味着 2 层将分别接受单独的输入并产生输出,我们可以在其上进行进一步的操作?
  • 你的问题没有多大意义,你只是画了一张图,问我们“这是串联吗?”,这不太合适。
  • 谢谢,我想问的可能是没有通过。我会尽快更新这个问题。
  • @thushv89 我已经用我的代码和更好的图片编辑了这个问题..

标签: python tensorflow machine-learning keras recurrent-neural-network


【解决方案1】:

连接在这里意味着“链接在一起”或“统一”,将两个实体结合在一起。

我认为您的问题已在 https://datascience.stackexchange.com/questions/29634/how-to-combine-categorical-and-continuous-input-features-for-neural-network-trai 中得到解决(如何结合分类和连续输入特征进行神经网络训练

如果您将生物医学数据(即心电图)作为连续数据并将诊断作为分类数据,我会认为集成学习是最好的分析方法。

这里最好的解决方案是什么取决于你的问题的细节......

https://machinelearningmastery.com/ensemble-methods-for-deep-learning-neural-networks/ 中描述了构建两个神经网络的集成

【讨论】:

    【解决方案2】:

    是的,您实现的内容是正确的(与图表相比)。确切地说,它正在执行以下操作。这里,蓝色节点表示输入/输出,N 表示None(这是批处理维度)。

    但只是添加一些注释,

    • 我假设您想在第一个 Dense 层(具有 64 个单元)混合 RNN 的两个输出,因为之后,不知道哪个输入是哪个。
    • 当您使用Concatenate 作为经验法则时,指定您需要连接的轴(默认为-1)。这里有两个输入 (None, 25)(None, 25),axis=-1 可以正常工作。但具体一点总是好的,否则在实现复杂模型时可能会得到奇怪的结果。

    【讨论】:

      猜你喜欢
      • 2019-08-13
      • 2019-04-27
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      相关资源
      最近更新 更多