[英]Trying to understand keras SimpleRNN
我有一个医学纵向数据,我正在对其进行研究。 首先,我正在处理 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="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_sequences
是 False ,那么我不应该只得到 RNN 层的最后一个输出。 为什么输出是来自 RNN 层的形状(无,10)? 我认为它应该是 (sample size,1) 。我下面提到的逻辑也有缺陷,但我需要解决它:
单位对应于输出单位。 最初我的猜测是,因为有 3 个时间步长,所以必须有 3 个输出单位,但我很惊讶即使给单位= 128 或 10,1 模型也能工作。 它是如何以及为什么发生的? 这个问题和上面的一个问题让我更加困惑。
此外,如果我在不同的时间范围内测量了不同的特征集或具有不同的时间步长,我该如何构建模型? 我如何与上述模型结合。
(samples, 10)
是正确的。(samples, 3, 1)
并且input_shape
应该是(3, 1)
,所有这些在您的代码中都是正确的。 我不确定您在谈论“numpy 如何表示 3d 数组”,形状很清楚,numpy 不会对输入形状进行任何修改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.