Python 试图理解keras SimpleRNN
我有一个医学纵向数据,我正在进行研究。 首先,我使用4000行样本,3个时间步(3列)的骨骼大小对应于3个月内测量的骨骼大小 我已经完成了基本模型。现在我想确定我对模型的理解是否正确Python 试图理解keras SimpleRNN,python,tensorflow,keras,recurrent-neural-network,Python,Tensorflow,Keras,Recurrent Neural Network,我有一个医学纵向数据,我正在进行研究。 首先,我使用4000行样本,3个时间步(3列)的骨骼大小对应于3个月内测量的骨骼大小 我已经完成了基本模型。现在我想确定我对模型的理解是否正确 model = Sequential() model.add(layers.SimpleRNN(units=10, input_shape=(3,1),use_bias=True,bias_initializer='zeros',activation="relu",kernel_initializer="rando
model = Sequential()
model.add(layers.SimpleRNN(units=10, input_shape=(3,1),use_bias=True,bias_initializer='zeros',activation="relu",kernel_initializer="random_uniform"))
model.add(layers.Dense(1, activation="sigmoid"))
model.compile(loss='binary_crossentropy', optimizer='sgd')
model.summary()
model.fit(trainX,train_op, epochs=100, batch_size=50, verbose=2)
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
以下是我对这种模式的一些疑问:
return\u sequences
为False,那么我不应该只从RNN层获取最后一个输出。为什么RNN层的输出为形状(无,10)?我认为应该是(样本量,1)李>
我下面提到的逻辑也有缺陷,但我需要解决它,即:
单位对应于输出单位。最初我的猜测是,由于有3个时间步,因此必须有3个输出单位,但我感到惊讶的是,即使给定单位=128或10,1,该模型仍然有效。它是如何发生的以及为什么发生的?这个问题和上面的一个问题让我更加困惑
(示例,10)
是正确的(示例,3,1)
,而输入的形状应该是(3,1)
,所有这些在代码中都是正确的。我不确定你在“numpy如何表示3d阵列”中所说的是什么,形状很清楚,numpy没有对输入形状进行任何修改
请告诉我什么是单位。?我关联时间步长和单位的方式是,每个RNN单元为输入生成一个输出。由于有3个时间步长,因此必须有3个RNN单元。RNN细胞和单位相同吗?不,单位是神经元的数量,RNN细胞输出的尺寸。所以,单位是RNN细胞隐藏状态的数量。?因此,在这种情况下,每个RNN单元将有10个隐藏状态。由于返回序列为假,最后一个RNN单元将输出对应于10个隐藏状态的10个值?我是对的吗?是的,这是正确的,这是隐藏状态的维度。谢谢,根据你的经验,拥有更多的单位有帮助吗?