RNN:理解连接层

2024-04-20 07:44:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解张量流keras中层的连接。 下面我画了我认为是两个RNN层(为了图片清晰而备用)和输出的串联

My model

这里我试图连接两个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()

Tags: inputmodellayers时间序列activationkerasdense
2条回答

串联在这里指的是“连接在一起”或“统一”,使两个单元结合在一起。你知道吗

我认为你的问题在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/中描述

是的,您实现的是正确的(与图表相比)。确切地说,它正在做以下工作。这里,蓝色节点表示输入/输出,N表示None(这是批处理维度)。你知道吗

enter image description here

但我只想补充几句

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

相关问题 更多 >